0

我正在尝试使用 jQuery 将事件绑定到 Javascript“类”的特定实例的“方法”。要求是我在事件处理程序中应该能够使用“this”关键字来引用我最初将事件绑定到的实例。

更详细地说,假设我有一个“类”,如下所示:

function Car(owner) {
  this.owner = owner;
}
Car.prototype = {
  drive: function() {
    alert("Driving "+this.owner+"s car!");
  }
}

还有一个例子:

var myCar = new Car("Bob");

我现在想将一个事件绑定到我的汽车的驱动器“方法”,以便每当我单击一个按钮时,例如在汽车“类”的 myCar 实例上调用驱动器“方法”。

到目前为止,我一直在使用以下函数来创建一个闭包,它允许我在“方法”中使用“this”关键字轻松访问实例成员。

function createHandler( obj, method ) {
  return function( event ) {
    return obj[method](event||window.event);
  }
}

我使用它如下:

document.getElementById("myButton")
  .addEventListener("click", createHandler(myCar,"drive"));

我如何用 JQuery 完成这样的事情?

我特别询问将“this”与指定的实例相关联,我可以自己处理周围的其他杂物。

4

2 回答 2

3

只需使用匿名函数:

$("#myButton").click(function() { myCar.drive(); });
于 2008-09-22T20:36:45.340 回答
0

试试这个 :

$("#myButton").each(function() {

var $btn = $(this);

    $btn.on('click',function(){

     // Do whatever you want.

    });
});

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

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

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

于 2015-10-08T06:03:07.757 回答