Javascript 父子事件
我有一个2 div元素。一个是孩子,一个像父母:Javascript 父子事件,javascript,jquery,Javascript,Jquery,我有一个2 div元素。一个是孩子,一个像父母: <div id="p"> <div id="c"> </div> </div> parentdiv附加了2个事件click和dblclick,子div附加了1个事件click。现在我的问题是,当我单击子div时,父div click事件也会执行。我试过e.stopPropagation()但仍然是相同的行为。帮帮我 你一定试错了,因为你应该在这里做这个把戏。确保在子元素处停止事件的传
<div id="p">
<div id="c">
</div>
</div>
parent
div附加了2个事件click
和dblclick
,子div附加了1个事件click
。现在我的问题是,当我单击子div
时,父div click事件也会执行。我试过e.stopPropagation()代码>但仍然是相同的行为。帮帮我 你一定试错了,因为你应该在这里做这个把戏。确保在子元素处停止事件的传播:
$("#c").click(function (e) {
e.stopPropagation(); //Will prevent event bubbling to #p
});
这是一个例子
上述情况的唯一例外是,如果您已使用live
方法绑定事件处理程序(由于live
已被弃用,您不应该这样做)。您无法停止实时
事件的传播,因为事件处理程序绑定到文档,而不是元素,并且事件必须在执行之前一直传播到文档。除了使用停止传播
外,您还可以在处理事件之前检查条件(一种方法)。通过这种方式,您还可以使用live
事件处理程序(如果我没有记错的话,现在jQuery中的on
)。看
[编辑]:使用bind
,您将只需要一个为div#p
定义的处理程序。提供的JSFIDLE会相应地进行调整。您可以发布您的javascript吗?可能是一个小的打字错误:)live
不推荐使用。。。而且,对于较旧的版本,delegate
应在live上使用(并在最旧的版本中绑定)<代码>停止播放
在live
中不起作用-而且live
速度较慢,无法链接。看这里,我没有说他必须使用live
,我只是指出这是一种可能性。此外,事件委派本身不必是文档级别的。它在某些根元素级别上是完全可用的,并且对于(比如)这样一个元素的xhr刷新子元素来说非常方便。对于我提供的JSFIDLE,它只是根元素上的一个单击处理程序。如果您使用的是较旧版本的jQuery,delegate()
将起作用,StopRopagation也可以使用它。只是一个提示:)