我正在尝试使用jQuery将事件绑定到Javascript“类”的特定实例的“方法”。要求是我在事件处理程序中应该能够使用“this”关键字来引用我最初将事件绑定到的实例。
更详细地说,我有一个“课程”如下:
function Car(owner) {
this.owner = owner;
}
Car.prototype = {
drive: function() {
alert("Driving "+this.owner+"s car!");
}
}
一个例子:
var myCar = new Car("Bob");
我现在想要将一个事件绑定到我的汽车的驱动器“方法”中,这样当我点击一个按钮时,例如在Car“类”的myCar实例上调用驱动器“method”。
到目前为止,我一直在使用以下函数创建一个闭包,允许我在“方法”中使用“this”关键字轻松访问实例成员。
function createHandler( obj, method ) {
return function( event ) {
return obj[method](event||window.event);
}
}
我用过如下:
document.getElementById("myButton")
.addEventListener("click", createHandler(myCar,"drive"));
如何使用JQuery完成这样的事情?
我特别询问将“this”与指定的实例联系起来,我可以独自处理另一个问题。
答案 0 :(得分:3)
只需使用匿名函数:
$("#myButton").click(function() { myCar.drive(); });
答案 1 :(得分:0)
试试这个:
$("#myButton").each(function() {
var $btn = $(this);
$btn.on('click',function(){
// Do whatever you want.
});
});
在这里,您首先创建一个循环来定位所有#myButton元素(在您的示例中哪个是错误的,您应该使用Class),如:
$(".myButton").each(...
然后我们将click事件处理程序附加到所有这些。