Bootstrap Collapse force展开全部

时间:2013-02-22 15:28:46

标签: jquery twitter-bootstrap collapse

我有很多不同的部分都有自己的折叠元素。我已经实现了jquery来扩展和折叠它们。

jQuery的:

$('.collapse').each(function (index) {
    $(this).collapse("toggle");
});

HTML代码段:

<ul class="nav nav-tabs">
    <li class="active" id="General"><a href="#">General</a></li>
</ul>
<div class="tab-content">
    <div class="tab-pane active">                                                                                                                                                                             
        <div class="accordion" id="accordion2">                                                
            <div class="accordion-group">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#generalQuestions" href="#collapseFour">Q. Can I choose my own Username and Password?</a>
                </div>
                <div id="collapseFour" class="accordion-body collapse">
                    <div class="accordion-inner">A. Yes, you can choose your own Username and Password.  We suggest using your email address for your Username, but any username that is between 8 and 20 characters long could be used.  A secure Password should be 8 to 20 characters long, with no spaces, and contains at least one special character.  </div>
                </div>
            </div>
            <div class="accordion-group">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#generalQuestions" href="#collapseFive">Q. Can I update by email address online?</a>
                </div>
                <div id="collapseFive" class="accordion-body collapse">
                    <div class="accordion-inner">A. Yes, but I have no idea how right now.  </div>
                </div>
            </div>
        </div>
    <a href="#top" class="btn btn-mini top"><i class="icon-arrow-up"></i> Back To Top</a>
</div>

http://jsfiddle.net/RmK2h/

我遇到了几个不同的问题。

  1. 在Internet Explorer中,该功能仅适用于第二次单击并且非常跳跃。在第二次单击时,按钮文本不正确。
  2. 如果我打开其中一个元素,然后单击展开按钮,除了最初打开的元素外,所有元素都会展开,它会折叠。基本上.collapse("toggle")功能只是将模式更改为打开或关闭它不关心它已经存在的状态。

2 个答案:

答案 0 :(得分:2)

看起来IE问题是Bootstrap的一个问题。从谷歌搜索,看起来collapse功能在某种形式或其他形式的其他每个版本中都会中断。所以,除非你使用collapse函数之外的东西,否则我不确定你是否能解决这个问题。我在IE中修复它(扩展/折叠按钮不再不同步)并使用此代码解决了第二个问题:

$('.expandcollapse').click(function () {
    if ($(this).html() == "<i class=\"icon-white icon-plus-sign\"></i> Expand All") {
        $('.collapse:not(.in)').each(function (index) {
            $(this).collapse("toggle");
        });
        $(this).html("<i class=\"icon-white icon-minus-sign\"></i> Collapse All");
    }
    else {
        $('.collapse.in').each(function (index) {
            $(this).collapse("toggle");
        });
        $(this).html("<i class=\"icon-white icon-plus-sign\"></i> Expand All");
    };
});

Fiddle

答案 1 :(得分:1)

Samsquanch's solution工作正常,但在我的情况下,我偶尔会让collapse不同步。

原因是数据属性data-parent="#selector"与所需的"expand all"行为相冲突。 Bootstrap文档指出:

  

要将类似手风琴的组管理添加到可折叠控件,请添加   数据属性data-parent="#selector"

因此,当需要"expand all"功能时,最好在展开之前保留该数据属性或将其删除。