2014-12-01 57 views
0

我想做到以下幾點:自定義jQuery的手風琴

1)默認& 2打開第一盒),點擊後關閉對話框。現在它關閉&立即重新打開。

DEMO:http://jsfiddle.net/2hmzcgqm/

(function($) { 

    var allPanels = $('.accordion > dd').hide(); 

    $('.accordion > dt > a').click(function() { 
    allPanels.slideUp(); 
    $(this).parent().next().slideDown(); 
    return false; 
    }); 

})(jQuery); 
+0

隱藏基地http://jsfiddle.net/2hmzcgqm/3/ – Shiala 2014-12-01 23:31:22

回答

1

1)click處理程序之後添加此行:

$('.accordion > dt > a').first().trigger('click'); 

2)在click處理程序的第二行添加此行

if ($(this).parent().next().is(":visible")) return false; 

So:

$('.accordion > dt > a').click(function() { 
    allPanels.slideUp(); 
    if ($(this).parent().next().is(":visible")) return false; 
    $(this).parent().next().slideDown(); 
    return false; 
}); 
$('.accordion > dt > a').first().trigger('click'); 

更新FIDDLE

+0

它不會關閉點擊 – Shiala 2014-12-01 23:33:34

+0

我喜歡你的比我更好 – Shiala 2014-12-01 23:39:33

+0

@Shiala爲什麼感謝你。你的答案是我如何從邏輯上想要做到這一點。但是有一個更簡單的解決方案。 – bowheart 2014-12-01 23:55:19

1

小提琴:http://jsfiddle.net/2hmzcgqm/3/ 保存的知名度,然後它會確定它是否有顯示或對

var allPanels = $('.accordion > dd').hide(); 

    $('.accordion > dt > a').click(function() { 
    var $dd = $(this).parent().next(), 
     isShown = $dd.is(':visible'); 

    allPanels.slideUp(); 

    $dd[isShown ? 'slideUp' : 'slideDown'](); 

    return false; 
    }); 

    $('.accordion > dt > a').get(0).click();