event.stopPropagation();不按预期行事

时间:2012-04-09 11:24:37

标签: javascript jquery javascript-events stoppropagation

我读了几篇与event.stopPropagation()相关的文章;但是所提供的解决方案都不适用于我。 基本上我所拥有的是一个手风琴小部件,默认情况下所有元素都已折叠。在每个元素标题(dt标记)上还有一个复选框。单击该复选框不应触发手风琴使其元素展开。

<dt data-toggle="collapse">
<span class="subscribe-checkbox"><button type="button" class="btn toggle-btn" data-toggle="button"></button></span>
</dt>
<dd>
<p>Accordion content...</p>
</dd>

单击跨度(应该作为复选框)应该向其添加“已选中”类。然而,它也扩展了手风琴元素(dd标签)。 我在jQuery中所做的是:

$('.accordion-group .btn.toggle-btn').click(function (event) {
event.stopPropagation();
});

虽然没有显示手风琴内容(这很好),但元素也不会改变类,所以它不会被“检查”。 我也试过.live()也没用。

提前致谢, 西普里安。

2 个答案:

答案 0 :(得分:1)

您必须使用addEventListener,然后使用布尔Capture参数来控制父元素的行为。

答案 1 :(得分:0)

stopPropagation()不起作用,因为<dd>不是<span>的父级,因此该事件不会从<span>传播到<dd>

您必须稍微重构处理程序,可能会删除整个代码的父元素的单击处理程序,并为<dd>

添加新的处理程序