/ / Mootools Klasse zu jQuery - Javascript, jQuery, Klasse, oop, mootools

Mootools Klasse zu Jquery - javascript, jquery, class, oop, mootools

Ich konvertiere eine Mootools-Klasse nach JQuery, habe aber im Moment ein Problem.

Ich habe folgenden Code (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(){

}
});

Jetzt in Jquery habe ich das

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(){

}
})

Mein Problem ist, wie man die addline Funktion an btnAdd bindet. Mein Code funktioniert nicht, weil sich das Element "this" ändert. Und ich weiß nicht, wie ich die Funktion bindWithEvent in jquery konvertieren soll.

Irgendeine Lösungsmöglichkeit?

Danke im Voraus

Antworten:

1 für die Antwort № 1

Soweit ich weiß, bietet jQuery kein ähnliches Konzept für Klassen wie mootools. Sie können also den »klassischen JS-Ansatz« verwenden, um Klassen wie die folgenden zu erstellen:

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();

Um also Ihre Frage zu beantworten: Sie müssen im Grunde genommen einen Verweis auf das »Original this« aufbewahren.