Bootstrap Collapse force expand all

穿精又带淫゛_ 提交于 2019-12-12 22:19:41

问题


I have a bunch of different sections that have their own collapse elements. I have already implemented the jquery to expand and collapse them.

jQuery:

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

HTML Snippet:

<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/

There are a couple different problems I'm having.

  1. In Internet Explorer the functionality only works on the second click and is very jump. With it working on the second click the button text is incorrect.
  2. If I open one of the elements and then click the expand button all elements expand except the one that was originally opened, it collapses. Essentially the .collapse("toggle") functionality simply changes the mode to either open or closed it isn't concerned with the state it's already in.

回答1:


It looks like the IE problem is an issue with Bootstrap. From Googling a bit, it looks like the collapse functionality breaks in every other release in some form or another. So, unless you go with something other than the collapse function I'm not sure you're going to be able to fix that. I sort of fixed it in IE (the expand/collapse buttons don't get out of sync anymore) and fixed your second problem with this code:

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




回答2:


Samsquanch's solution works correctly, but in my case I was still able to get collapse out of sync once in a while.

The reason was that the data attribute data-parent="#selector" is in conflict with the wanted "expand all" behavior. The Bootstrap documentation points out:

To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector".

So when "expand all" functionality is needed, it's better to leave that data attribute out or remove it before expanding.



来源:https://stackoverflow.com/questions/15027535/bootstrap-collapse-force-expand-all

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!