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



考虑一下:

var fn = function() { console.log("hi") };
$(document).keydown(fn);
$(document).keydown(fn);

当我按下文档内的键时,fn将被触发两次。

是否有一种方法可以唯一地添加事件,而不需要先解除绑定?

No。最好的办法是先解除绑定。如果您希望这样做,还可以在绑定之前手动检查哪些处理程序绑定到对象。参见:jQuery查找用对象

注册的事件处理程序

有一种方法,它是通过用一个函数设置DOM元素的.onkeydown属性(根本不使用jQuery)。因为赋值它会覆盖之前的内容,所以它不会链接。

当然,能够链接显然是更强大的,这就是jQuery赋予你的力量。

很可能调用unbind是正确的解决方案,但只是为了完整性,设置.on[eventname] prop将工作得很好,当你知道只有一个函数你想要触发。

相关内容

  • 没有找到相关文章

最新更新