【发布时间】:2013-09-26 00:21:05
【问题描述】:
我有一个内容是动态的模态,并且这个模态有一个拒绝按钮。
这个模态本身是通过链接动态生成的,所以我必须使用委托
$( "body" ).delegate( ".reject", "click", function(e) {
$(".modalInfo").hide();
$(".modalReject").show();
someFunction();
});
假设用户单击拒绝按钮并关闭模式。然后她加载了一个新的模态,所以这个模态的上下文发生了变化并且有一个新的拒绝按钮。
当用户在这个新上下文中再次单击拒绝按钮时, someFunction() 以某种方式执行了两次 - 一次来自原始点击,第二次来自新点击。再次关闭模式,加载一个新的上下文,执行点击,瞧……得到了三个 someFunction() 调用!
经过一番研究,这是我发现的:When replace element, what happen on the events and data
如何预防?
【问题讨论】:
-
你在哪里绑定这些事件?
-
看起来您在每次调用时都在执行上述代码以显示模态...您只需在 dom 就绪时执行此代码一次
-
@PSL 我在加载模式的 ajax 调用之后绑定这些事件。
-
@a0z0ra 是的,您可以这样做,因为使用了事件委托并且事件绑定到 body 元素
-
等一下.. 如果你的 .reject 按钮没有被破坏,为什么你每次都这样做,好像你一次又一次地绑定事件..
标签: javascript jquery jquery-delegate