如何将事件处理程序绑定到JQuery中的实例?

我试图使用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”与指定的实例联系起来,我可以独自处理另一个问题。

只需使用匿名函数:

 $("#myButton").click(function() { myCar.drive(); }); 

试试这个 :

 $("#myButton").each(function() { var $btn = $(this); $btn.on('click',function(){ // Do whatever you want. }); }); 

在这里,您首先创建一个循环来定位所有#myButton元素(在您的示例中哪个是错的,您应该使用Class),如:

 $(".myButton").each(... 

然后我们将click事件处理程序附加到所有这些处理程序。