指定した要素をクリックすると、指定したリストが非表示になり、もう一度クリックすると表示に切り替わります。
HTML:
<ul class="acc" id="acc">
<li>
<h3 class="slide">CATEGORIES</h3>
<div class="acc-section">
<div class="acc-content view">
<ul>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
</div>
</li>
<li>
<h3 class="slide2">CATEGORIES</h3>
<div class="acc-section">
<div class="acc-content view2">
<ul>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
</div>
</li>
</ul>
次のコードを使用して、両方のリストでこれを達成しました。
$(document).ready(function() {
$('h3.slide').toggle(function() {
$('div.view').fadeOut('slow');
return false;
},
function() {
$('div.view').fadeIn('slow');
return false;
});
$('h3.slide2').toggle(function() {
$('div.view2').fadeOut('slow');
return false;
},
function() {
$('div.view2').fadeIn('slow');
return false;
});
});
これに関する私の問題は、それが「動的」ではないことであり、将来別のリストを追加する場合は、上記のコードも必要になります。1 つの小さなコードを使用して、クリック可能な要素と表示/非表示要素に同じ 2 つのクラス名を再利用できるようにしたいと考えています。次のコードでこれを達成しようとしましたが、正しく動作させることができません:
$(document).ready(function() {
$('h3.slide').toggle(function() {
$(this).siblings('div.view').fadeOut('slow');
return false;
},
function() {
$(this).siblings('div.view').fadeIn('slow');
return false;
});
});
任意のヒント?