繁体   English   中英

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

[英]How can I bind an event handler to an instance in 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");

现在,我想将一个事件绑定到我的汽车的驱动器“方法”上,这样,无论何时单击按钮,例如,都会在汽车“类”的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”与指定的实例相关联,我可以自己处理的所有其他问题。

只需使用匿名函数即可:

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

尝试这个 :

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

var $btn = $(this);

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

     // Do whatever you want.

    });
});

在这里,您首先创建一个以所有#myButton元素为目标的循环(在您的示例中这是错误的,您应该使用Class),例如:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM