我读了几篇与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()也没用。
提前致谢, 西普里安。
答案 0 :(得分:1)
您必须使用addEventListener
,然后使用布尔Capture
参数来控制父元素的行为。
答案 1 :(得分:0)
stopPropagation()不起作用,因为<dd>
不是<span>
的父级,因此该事件不会从<span>
传播到<dd>
。
您必须稍微重构处理程序,可能会删除整个代码的父元素的单击处理程序,并为<dd>