Skip to content
Advertisement

Bootstrap Accordion – Toggle all nested elements

I have a lot of nested bootstrap collapsible elements on a page. As example http://jsfiddle.net/JPgLT/7/

How can i set a link to toggle all elements only within the parent element?

<div class="panel panel-default">
    <div class="panel-heading">
            <h2 class="panel-title">
                <a href="#collapse-764" data-parent="#collapsible-" class="accordion-toggle" data-toggle="collapse">Headline 1</a>
            </h2>
    </div>
    <div id="collapse-764" class="panel-collapse collapse">
        <div class="panel-body">
            <div class="panel panel-default">
                <div class="panel-heading">
                        <h2 class="csc-firstHeader panel-title">
                            <a href="#collapse-765" data-parent="#collapsible-764" class="accordion-toggle" data-toggle="collapse">Headline 1.1</a>
                        </h2>
                </div>
                <div id="collapse-765" class="panel-collapse collapse">
                    <div class="panel-body">
                        <p>Text 1.1</p>
                    </div>
                </div>
            </div>
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h2 class="panel-title">
                        <a href="#collapse-766" data-parent="#collapsible-764" class="accordion-toggle" data-toggle="collapse">Headline 1.2</a>
                    </h2>
                </div>
                <div id="collapse-766" class="panel-collapse collapse">
                    <div class="panel-body">
                        <p>Text 1.2</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Advertisement

Answer

You could add a special class closeall to the buttons, and then toggle the collapse state using jQuery..

$('.closeall').click(function(){
    $(this).parents('.panel-heading') // find the parent heading element
    .next('.panel-collapse')          // find the next collapse element
    .collapse('show')                 // make sure it's open
    .find('.panel-collapse')          // find inner collapse elements
    .collapse('toggle');              // toggle their state
});

Bootstrap 3 Demo: https://codeply.com/p/g0vquJl0Xn

Related questions
bootstrap 3 collapse(‘hide’) opens all collapsibles?

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement