Bootstrap accordion only automatically resets one panel

I have been combing my head for the last 2 hours. I have a two-panel accordion. I want the first panel to be expanded by default. When I clicked the header of the folded panel, I want the panel to expand and the other to collapse. It only works in certain situations for the second panel.

Here is the JSFiddle .

Here is my markup:

<div id="proposalAccordian" class="panel-group">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-parent="#proposalAccordian" href="#collapseContact">Contact</a>
            </h4>
        </div>
        <div id="collapseContact" class="panel-collapse collapse in">
            <div class="panel-body">
                @Html.Partial("_ContactPanel")
            </div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-parent="#proposalAccordion" href="#collapseProposal">Proposal</a>
            </h4>
        </div>
        <div id="collapseProposal" class="panel-collapse collapse">
            <div class="panel-body">
                @Html.Partial("_ProposalPanel")
            </div>
        </div>
    </div>
</div>

I am using Bootstrap v3.1.1 and jQuery v1.10.4.

+4
source share
4 answers

You need to add data-parent="#proposalAccordian"

<a data-toggle="collapse" data-parent="#proposalAccordian"  href="#collapseProposal">Proposal</a>

See the script: http://jsfiddle.net/nicos/JKqGc/

+10
source
Strangely, your code works on jQuery 1.9.x:

http://jsfiddle.net/isherwood/MMxMn/5

and 1.11.x:

http://jsfiddle.net/isherwood/MMxMn/4

but not 1.10.x:

http://jsfiddle.net/isherwood/MMxMn/8

, "", .

0
<div id="accordion" role="tablist" aria-multiselectable="true">
    All panels inside this..
</div>

In our case, the problem was in the HTML structure, since we had a foreach loop inside. The fix is ​​to use one accordion for all panels.

0
source

try it

var $collapse = $('.collapse');
$collapse.collapse().on('show.bs.collapse', function() {
    $collapse.collapse('hide');
});
0
source

Source: https://habr.com/ru/post/1542706/


All Articles