3

我有一堆不同的部分,它们有自己的折叠元素。我已经实现了 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")功能只是将模式更改为打开或关闭,它不关心它已经处于的状态。
4

2 回答 2

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");
    };
});

小提琴

于 2013-02-22T16:31:12.720 回答
1

Samsquanch 的解决方案可以正常工作,但在我的情况下,我仍然collapse偶尔会不同步。

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

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

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

于 2013-07-01T11:11:12.120 回答