2014-12-01 56 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();