Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery解除绑定后重新绑定单击_Javascript_Jquery_Bind_Unbind - Fatal编程技术网

Javascript Jquery解除绑定后重新绑定单击

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

我在一个div中有一个元素,它有一个关联的click事件。这两个单击事件都可以正常工作,但它们同时触发

当我单击内部元素以禁用父div的click事件时:

我的html(在@foreach MVC Razor循环中):

我从中发现了这个想法

这允许我单击addComment div,并根据需要禁用对父div的单击。但重新绑定显然没有发生。当我取消注释
$(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();});