Javascript 父子事件

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()但仍然是相同的行为。帮帮我 你一定试错了,因为你应该在这里做这个把戏。确保在子元素处停止事件的传

我有一个2 div元素。一个是孩子,一个像父母:

<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也可以使用它。只是一个提示:)