2

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

<div id="p">
  <div id="c">
  </div>
</div> 

div 附加了parent2 个事件clickdblclick并且子 div 附加了 1 个事件click。现在我的问题是当我点击child div父 div 点击事件时也执行了。我尝试了e.stopPropagation();但仍然是相同的行为。帮我 ?

4

2 回答 2

5

你一定是试错了,因为stopPropagation应该在这里解决问题。确保在子元素处停止事件的传播:

$("#c").click(function (e) {
    e.stopPropagation(); //Will prevent event bubbling to #p
});

这是一个工作示例


上述情况的唯一例外是,如果您已将事件处理程序与该live方法绑定(您不应该这样做,因为live已弃用)。您无法停止事件的传播,live因为事件处理程序绑定到文档而不是元素,并且事件必须在执行之前一直传播到文档。

于 2012-06-22T09:12:09.253 回答
0

除了使用之外,stopPropagation您还可以在处理事件之前检查条件(事件委托方法)。通过这种方式,您还可以使用事件处理程序(如果我是正确的,现在在 jQuery 中live替换为)。on看到这个小提琴

[编辑]:使用bind,您只需要一个处理程序,为div#p. 提供的 jsfiddle 会相应调整。

于 2012-06-22T09:26:34.480 回答