[英]How to pass event object to the event handler
我正在附加文档按键事件,例如
$(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);
});
但是在这种情况下,我将很难解除绑定该特定处理程序的操作。
请给我建议一种方法。
这可以:
$(document).on("keypress",function(e){
myObject.onDocumentKeyPress(e);
});
您说过 :但是在这种情况下,我将很难解除绑定该特定处理程序的操作。
为了解除绑定,在附加事件处理程序时使用名称空间 :
$(document).on("keypress.something",function(e){
myObject.onDocumentKeyPress(e);
});
现在,您可以将事件处理程序与该名称空间解除绑定:
$(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演示 。 因此,问题出在其他地方,您e is not defined
错误e is not defined
。 尝试将jQuery版本替换为1.7+
然后使用.on()
方法。
var myobject = {
onDocumentKeyPress: function (e) {
console.log('Event ', e);
}
};
$(document).live('keypress', myobject.onDocumentKeyPress);
这将并且确实将e
作为事件对象。
正如NOX所指出的,问题可能出在您使用的是jQuery 1.9,而其中的live
已被删除。 尝试更换live
与on
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.