カスタムアコーディオンの実装に苦労しています。これは実際には、slideToggle の表示/非表示にすぎませんが、一度に 1 つのトグルのみを開き、追加のスタイリングのために jquery でクラスを追加および削除します。
以下のコードはほとんど機能します...ループのために私をスローする部分は、h4要素で「アクティブ」のクラスを追加/削除しています。誰かが H4 をクリックすると、クラス「アクティブ」を受け取り、ブロック内の他のすべての h4 要素から「アクティブ」が削除されます。私はこれを無数の方法で試しましたが、まったく理解できません。
これが私のHTMLの例です...
<div class="accord-block">
<h4 class="accordLink"><a href="#">Title of box</a></h4>
<div class="accord-container">
<div class="accord-content">
<p>Lorem ipsum content dolor sit amet desu</p>
</div>
</div>
</div>
<div class="accord-block">
<h4 class="accordLink"><a href="#">Another title of another box</a></h4>
<div class="accord-container">
<div class="accord-content">
<p>Lorem ipsum content dolor sit amet desu</p>
</div>
</div>
</div>
これが私のjqueryです...
$(document).ready(function(){ $(".accord-container").hide(); $("h4.accordLink").click(関数(){ $(".accord-block").find(".active").removeClass("active"); $(this).toggleClass("active").next().slideToggle("fast"); $(this).parent().toggleClass("activeToggle").siblings() .removeClass("activeToggle").children(".accord-container").hide("fast"); false を返します。 }); });
どんな洞察も素晴らしいでしょう。CSS と ID の 1 つのセットを受け取るには「accord-block」が必要であり、このソリューションがほとんどそこにあると感じたときに Jquery UI を使用したくないため、このルートを使用します。
ありがとう!
追加する編集:私が抱えている問題を説明するのを忘れていました!上記の現在のコードでは、単一の h4.accordLink を「開く」、「閉じる」の順にクリックしても、jquery はクラス「アクティブ」を削除しません。アコードブロックの間をクリックするとうまく機能しますが、単一のブロックを開閉するときは機能しません。