Mootools Class 到 Jquery

Mootools Class to Jquery

我正在将 mootools class 转换为 Jquery,但我现在遇到了问题。

我有以下代码 (mootools)

var ListaItens = new Class({

    ...

    ...

    initialize: function(element){
        ....

        this.btnAdd = this.tabela.getElement('.add_linha button');
        if(this.btnAdd){
            this.btnAdd.addEvent('click', this.addLinha.bindWithEvent(this));
            this.checkAdd();
        }

        ...
    },

    addLinha: function(){

    }   
});

现在 Jquery 我有这个

var ListaItens = function(element, maxLinhas){

    ...

    this.btnAdd = this.tabela.find('.add_linha button')[0];
    if(this.btnAdd){
        //$(this.btnAdd).proxy('click', this.addLinha);
        $(this.btnAdd).on("click", this.addLinha);
        this.checkAdd;
    }

    ...

    this.addLinha = function(){

    }
})

我的问题是如何将 addline 函数绑定到 btnAdd。我的代码不起作用,因为元素 'this' 发生了变化。而且我不知道如何将函数 bindWithEvent 转换为 jquery.

有什么解决办法吗?

提前致谢

据我所知,jQuery 不提供与 mootools 类似的 类 概念,因此您可以做的一件事是使用 »经典 JS 方法« 创建 类 像这样:

function ListaItens () {
    var that = this;

    this.tabela = $(…);
    this.btnAdd = this.tabela.find(…);

    if (this.btnAdd) {
        this.this.btnAdd.on('click', function (e) {
            that.addLinha();
        })
    }
}

ListaItens.prototype.addLinha = function () {

}

var instance = new ListaItens();

因此,要回答您的问题:您基本上需要做的是保留对 »original this«

的引用