Javascript Jquery解除绑定后重新绑定单击
我在一个div中有一个元素,它有一个关联的click事件。这两个单击事件都可以正常工作,但它们同时触发 当我单击内部元素以禁用父div的click事件时: 我的html(在@foreach MVC Razor循环中): 我从中发现了这个想法 这允许我单击addComment div,并根据需要禁用对父div的单击。但重新绑定显然没有发生。当我取消注释Javascript Jquery解除绑定后重新绑定单击,javascript,jquery,bind,unbind,Javascript,Jquery,Bind,Unbind,我在一个div中有一个元素,它有一个关联的click事件。这两个单击事件都可以正常工作,但它们同时触发 当我单击内部元素以禁用父div的click事件时: 我的html(在@foreach MVC Razor循环中): 我从中发现了这个想法 这允许我单击addComment div,并根据需要禁用对父div的单击。但重新绑定显然没有发生。当我取消注释$(this).parent()时,单击addComment click函数中的(处理程序),单击将触发,控制台显示“parent div clic
$(this).parent()时,单击addComment click函数中的(处理程序)
,单击将触发,控制台显示“parent div click”
如何在不立即触发的情况下重新绑定父div的单击?您可以尝试:
$(this).parent().bind('click');
如果我理解正确: 要停止事件的传播,请使用event.stopPropagation() 例如:
<div id="a">
Outer
<div id="b">Inner</div>
<div>
您可以在此处阅读更多内容:
我怀疑原因是您正在子click事件中重新绑定click处理程序,然后该事件传播到下一个级别(其父级),现在又有了click处理程序
除非我遗漏了其他东西,否则Naor关于停止传播的建议应该能达到你的目的。那是行不通的。解除绑定后,将丢失在元素上设置的所有内容。这就是为什么我有
click(handler)
Doh。。。我在很多其他有“实时”事件的函数中使用了stopPropagation,甚至没有想到在这里使用它。谢谢你,真管用!是的,这就是诀窍:)虽然我不认为在解开和重新绑定后事件会传播。
$(this).parent().bind('click');
<div id="a">
Outer
<div id="b">Inner</div>
<div>
$("#a").click(function(event) {alert("a");});
$("#b").click(function(event) {alert("b"); event.stopPropagation();});