如果我将一个处理程序分配给元素的OnClick事件两次,那么处理程序将被执行两次。但是我想改变这一点,即使我分配了两次,处理程序只会执行一次。
说明问题的荒谬例子:
$('.button').click( function(){ alert('here'); }); $('.button').click( function(){ alert('here'); });
所以我添加了两次处理程序。现在当我点击一个元素与该类,我会得到两个警报框。
问题是,我如何限制它,所以我只会得到一个警报框?
解决方法
如果.one()实际上是你之后(除了事件处理程序被触发一次之后),那么我认为这是正确的答案。如果没有,您可以在绑定之前取消绑定事件:
var myEventHandler = function () {alert('hello')}; $('a').unbind('click',myEventHandler); $('a').bind('click',myEventHandler);
应该工作
编辑:由于这个回复不断得到投票,我将添加另一个(在大多数情况下更好)的解决方案,至少在OP的情况下会起作用。当处理动态添加的内容时,只需在父元素上使用jQuery的on(),而不是直接在元素上应用事件处理程序。