Преобразувам клас на 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(){
}
})
Проблемът ми е как да обвържа функцията за добавяне към btnAdd. Кодът ми не работи, защото елементът "това" се променя. И аз не знам как да преобразувам функцията bindWithEvent в jquery.
Всяко решение?
Благодаря предварително
Отговори:
1 за отговор № 1Доколкото знам, 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();
Така че, за да отговорите на вашия въпрос: Това, което всъщност трябва да направите, е да запазите препратка към "оригинала това"