1
我知道這已被問了上千次,但我仍然無法解決它。我有一個簡單的根據以下this tutorial,我試圖添加一個「展開/全部摺疊」鏈接。我找到了擴展所有方法的方法,但無法弄清楚如何摺疊它們。 slideToggle()
解決方案的問題在於,如果我打開了一個,然後單擊該鏈接,它將關閉/打開所有這些鏈接,但是這些鏈接都是預先激活的鏈接。Jquery展開收起所有div點擊
我成立了一個jsFiddle here.
下面是代碼的概述:
HTML:
<h2 class="acc_trigger"><a href="#">Div 1</a></h2>
<div class="acc_container">
<div class="block"> Yay content!</div>
</div>
<h2 class="acc_trigger"><a href="#">Div 2</a></h2>
<div class="acc_container">
<div class="block">More Content, Score!</div>
</div>
<h2 class="acc_trigger"><a href="#">Div 3</a></h2>
<div class="acc_container">
<div class="block">Even More Content</div>
</div>
<a href="#" class="acc_expand-all">Expand/Collapse All </a>
JS:
jQuery(document).ready(function($) {
//Set default open/close settings
$('.acc_container').hide(); //Hide/close all containers
//On Click
$('.acc_trigger').click(function(){
$('.acc_trigger').removeClass('active').next().slideUp();
//Remove all "active" state and slide up the immediate next container
$(this).toggleClass('active').next().slideDown();
return false; //Prevent the browser jump to the link anchor
});
$('.acc_expand-all').click(function(){
//expand all on click
$('.acc_trigger').addClass('active').next().slideDown();
return false;
});
});
謝謝,我知道這是類似的東西,但我試圖用'hasClass()',而不是'all.lenght'你知道一種方法來擺脫jumpyness(SP的)當你展開全部然後點擊只有一個div? – BandonRandon
@BandonRandon:這將取決於你想在這種情況下發生什麼。例如,如果你想關閉一次點擊(這是我所要做的),你可以檢查看看有多少人是活躍的,如果它不止一個,就這樣做。 –
我在想,只要將其中一個點擊到'show()'的狀態,然後讓其他所有人滑動。 – BandonRandon