1
アコーディオンの各パネルに閉じるボタンを追加しようとしています。これは私のスクリプトです。それは仕事をしません。どこが間違っていますか?どんな助けもありがとう!アコーディオンに閉じるボタンを追加する
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function(){
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
$('#close').click(function() {
$("accordion").accordion({active: false}).click();
}
}
}
<div class="accord">
<button class="accordion"><b>one</b></button>
<div class="panel">
something about one
<div id="close"><a href="#">Close</a></div>
</div>
<button class="accordion"><b>two</b></button>
<div class="panel">
something about two
<div id="close"><a href="#">Close</a></div>
</div>
<button class="accordion"><b>three</b></button>
<div class="panel">
something about three
<div id="close"><a href="#">Close</a></div>
</div>
<button class="accordion"><b>four</b></button>
<div id="foo" class="panel">
something about four
<div id="close"><a href="#">Close</a></div>
</div>
</div>
アップデート:私は私のhtmlを追加しました。これがより簡単になることを望みます。前もって感謝します!
閉じるボタンが1つの場合、その機能はループから外れる必要があります。 –
'$( '#close')'はid = closeの項目を返します。そうすれば、idがDOM全体で一意でなければならず、常に同じ要素になるはずです。 '$(" accordion ")について確かではありません。クラスを探している場合は、その前に' .'を追加してください。それがidならば、 '#'を追加してください –
あなたのコードは毎回アコーディオンノードをクリックするときに1つの余分なeventlistenerを追加します。 –