如何添加唯一的jQuery事件处理程序(没有重复)?

时间:2011-11-28 00:21:21

标签: jquery events event-handling

考虑一下:

var fn = function() { console.log("hi") };
$(document).keydown(fn);
$(document).keydown(fn);
当我按下文档内的键时,

fn将被触发两次。

有没有办法独立添加事件而无需先解开

2 个答案:

答案 0 :(得分:0)

没有。你最好的选择是首先取消绑定。如果要以这种方式执行,您还可以在绑定之前手动检查哪些处理程序绑定到对象。请参阅:jQuery find events handlers registered with an object

答案 1 :(得分:0)

有一种方法,它是通过使用函数设置DOM元素的.onkeydown属性(根本不使用jQuery)。由于分配它将覆盖之前的内容,因此不会链接。

当然能够连锁显然更强大,这就是jQuery给你的力量。

调用unbind可能是正确的解决方案,但只是为了完整性,设置.on[eventname]道具将适用于您知道只有一个要触发的函数的情况。