用JQuery切换手风琴

时间:2013-01-07 18:40:32

标签: jquery toggle accordion

我手里拿着一把手风琴,并没有打开和关闭每个标签。它只在选择另一个标题时关闭标签,但我希望用户能够在点击时关闭它。我不知道如何编辑这个Jquery以允许这种情况发生。

jQuery("ul.gdl-accordion li").each(function(){
    jQuery(this).children(".accordion-content").css('height', function(){ 
        return jQuery(this).height(); 
    });
    if(jQuery(this).index() > 0){
        jQuery(this).children(".accordion-content").css('display','none');
    }else{
        jQuery(this).find(".accordion-head-image").addClass('active');
    }       

    jQuery(this).children(".accordion-head").bind("click", function(){
        jQuery(this).children().addClass(function(){
            if(jQuery(this).hasClass("active")) return "";
            return "active";
        });
        jQuery(this).siblings(".accordion-content").slideDown();
        jQuery(this).parent().siblings("li").children(".accordion-content").slideUp();          jQuery(this).parent().siblings("li").find(".active").removeClass("active");
    });
});

我假设它位于.click函数的某个位置,在if语句中......但我不确定原因。

我也不确定为什么它会将第一个标签默认为开放...有没有办法修改它?

http://jsfiddle.net/FKAAM/

非常感谢任何建议。非常感谢SO。

4 个答案:

答案 0 :(得分:2)

改为使用slideToggle():

jQuery(this).siblings(".accordion-content").slideDown();

jQuery(this).siblings(".accordion-content").slideToggle();

http://jsfiddle.net/FKAAM/4/

答案 1 :(得分:1)

这里是acordion link和完整的jQuery代码:

jQuery(document).ready(function($){
  //you can now use $ as your jQuery object.
  $(".panel-heading").click(function() {
    $(this).parent().toggleClass('active').find('.panel-body').slideToggle('fast');
    $(".panel-heading").not(this).parent().removeClass('active').find('.panel-body').slideUp('fast');
  });
});

答案 2 :(得分:0)

添加:

collapsible: true

到您的手风琴选项,然后用户可以点击关闭它。

(jQuery UI Accordion:http://jqueryui.com/accordion/

答案 3 :(得分:-2)

我建议你使用jQuery手风琴

$(function() {
        $( "#accordion" ).accordion({
            collapsible: true
        });
    });

检查example here。我想这就是你需要的。