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は、boolean 引数を使用してから使用する必要があります。Capture

于 2012-08-23T11:01:35.957 に答える
0

<dd>は の親ではないため、stopPropagation() は機能しません。そのため、イベントは からに<span>伝搬されません。<span><dd>

ハンドラーを少し再構築する必要があります。おそらく、このコード全体の親要素のクリック ハンドラーを削除し、新しいハンドラーを追加します。<dd>

于 2012-04-09T11:37:14.617 に答える