这是使用 jQuery 在 JavaScript 中正确绑定和事件到对象方法的方法吗?
我已经设置了一些示例代码,但我关心的部分是注释后的两行“这样可以吗? ”
当然,由于回调是对象的方法,我需要上下文保持不变。
function MyPrototype(id) {
this.id = id;
this.sel = '#' + id;
// *** IS THIS OK? ***
$(this.sel).on('click', function(evt) {
MyPrototype.prototype.mouseClick.call(this, evt); });
}
MyPrototype.prototype.mouseClick = function (evt) {
// I want to use evt to get info about the event
// I want use this to access properties and methods of the instance
alert(this.id + ' was clicked');
}
myObject1 = new MyPrototype('myDiv1');
myObject2 = new MyPrototype('myDiv2');
此外,我可能会认为有必要将事件与特定功能解除绑定。
但是以下不起作用...
MyPrototype.prototype.unbindClick = function() {
$(this.sel).off('click', function(evt) {
MyPrototype.prototype.mouseClick.call(this, evt); });
}
myObject2.unbindClick();
请注意,我将一个内联函数作为事件处理程序传递。