Как по событию вызвать метод определенного экземпляра объекта
Нужно чтобы при создании экземпляра объекта в него передавался id элемента и по клику по этому элементу вызывался метод экземпляра объекта, который это событие создал. Подскажите пожалуйста как правильно это написать.
Ошибка явно в "this.Result()" так как this для него получается сам объект по которому производится клик, а не метод экземпляра объекта. function btn(id) { this.id = id; this.Result = function(){ alert("id="+this.id); } this.Events = function(){ jQuery("#"+this.id).click(function () { this.Result(); }); } } var objBtn = new btn("button1"); objBtn.Events(); |
this переопределяется при вызове функции jQuery. Попробуйте использовать замыкания, как-то так:
function btn(id) {
this.id = id;
this.Result = function(){
alert("id="+this.id);
}
var me = this;
this.Events = function(){
jQuery("#"+this.id).click(function () {
me.Result();
});
}
}
var objBtn = new btn("button1");
objBtn.Events();
|
Спасибо большое, то что нужно! :)
|
ну только переписал бы я этот код как-нибудь так (как минимум вынес бы метод в прототип)
function Btn( id ) {
this._id = id;
var onclick = bind( this.result, this );
$('#'+id).click( onclick );
}
Btn.prototype.result = function() {
alert( "id="+this._id );
}
function bind( f, o ) {
return function() {
f.apply( o, arguments );
}
}
var btn = new Btn('button1');
p.s. jvs оформляй код нормально... и учись писать его так, чтобы было понятно, что там происходит |
| Часовой пояс GMT +3, время: 21:23. |