gpt4 book ai didi

javascript - 如何将事件对象传递给事件处理程序

转载 作者:行者123 更新时间:2023-11-28 12:35:54 24 4
gpt4 key购买 nike

我正在附加一个文档按键事件,例如

$(document).live("keypress",myObject.onDocumentKeyPress);

我的处理程序实现是

onDocumentKeyPress:function(e){
if(e.keyCode == 13) { //Enter keycode
myobject.onColumnOptionClick(null,true);
}
}

现在在这个函数中我得到e is not Defined

如何将事件对象传递给事件处理程序?

我收到一个建议

$(document).live("keypress",function(e){
myObject.onDocumentKeyPress(e);
});

但在这种情况下,我会发现很难解除该特定处理程序的绑定(bind)。

请给我建议一个方法。

最佳答案

这很好:

$(document).on("keypress",function(e){
myObject.onDocumentKeyPress(e);
});
<小时/>

You said : but in this case I will find difficult to unbind that particular handler.

要解除绑定(bind),请在附加事件处理程序时使用命名空间:

$(document).on("keypress.something",function(e){
myObject.onDocumentKeyPress(e);
});

现在您可以取消事件处理程序与该命名空间的绑定(bind):

$(document).off("keypress.something");
  • .live() 在版本 1.7 中已弃用,并在版本 1.9 中删除。请改用 .on()
<小时/>

引用文献:

  • .on() - jQuery API 文档
<小时/>

正如@adeneo在评论中所说,事件总是自动传递:

$(function () {
var o = {
f: function (e) {
alert(e.keyCode);
}
}

$(document).on("keypress", o.f);
});

您可以查看jsFiddle demo 。所以问题出在其他地方,您会收到错误e is not Defined。尝试将您的 jQuery 版本替换为 1.7+ 并使用 .on() 方法。

关于javascript - 如何将事件对象传递给事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com