Как по событию вызвать метод определенного экземпляра объекта
Нужно чтобы при создании экземпляра объекта в него передавался 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, время: 15:33. |