注册的事件处理程序
考虑一下:
var fn = function() { console.log("hi") };
$(document).keydown(fn);
$(document).keydown(fn);
当我按下文档内的键时,fn
将被触发两次。
是否有一种方法可以唯一地添加事件,而不需要先解除绑定?
No。最好的办法是先解除绑定。如果您希望这样做,还可以在绑定之前手动检查哪些处理程序绑定到对象。参见:jQuery查找用对象
有一种方法,它是通过用一个函数设置DOM元素的.onkeydown
属性(根本不使用jQuery)。因为赋值它会覆盖之前的内容,所以它不会链接。
当然,能够链接显然是更强大的,这就是jQuery赋予你的力量。
很可能调用unbind是正确的解决方案,但只是为了完整性,设置.on[eventname]
prop将工作得很好,当你知道只有一个函数你想要触发。