【问题标题】:Mootools Class to JqueryMootools 类到 Jquery
【发布时间】:2016-08-26 10:41:09
【问题描述】:

我正在将 mootools 类转换为 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。

有什么办法吗?

提前致谢

【问题讨论】:

    标签: javascript jquery class oop mootools


    【解决方案1】:

    据我所知,jQuery 没有提供与 mootools 类似的类概念,因此您可以做的一件事是使用 »classic 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();
    

    所以,要回答您的问题:您基本上需要做的是保留对»原始 this«

    的引用

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多