自定义jQuery Accordion

时间:2014-12-01 23:07:40

标签: javascript 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);

2 个答案:

答案 0 :(得分:1)

1)在click处理程序后添加此行:

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

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

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

所以:

$('.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

答案 1 :(得分: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();