0

我阅读了几篇相关的文章,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();
});

虽然没有显示手风琴内容(这很好),但该<span>元素也不会更改类,因此它不会成为“已检查”。我也试过了.live(),也没有用。

4

2 回答 2

1

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

于 2012-08-23T11:01:35.957 回答
0

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

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

于 2012-04-09T11:37:14.617 回答