Frank
Frank

Reputation: 349

How to get one accordion tab open at a time Bootstrap

I'm having trouble trying to get it so my Bootstrap accordion style form only has one step tab open at a time. What do I need to change to get only one tab to be open at a time?

Here is a CodePen link to the full thing. Here is a portion of my HTML:

<div id="accordion" role="tablist" aria-multiselectable="false">
<div class="card">
    <div class="card-header" role="tab" id="headingOne">
        <div class="mb-0">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne" class="collapsed">
                <h3>Step 1 of 4: Create Profile</h3>
                <div class="edit-step">Edit Step</div>
            </a>
        </div>
    </div>
    <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne" aria-expanded="false" style="">
        <div class="card-block">
            <form>
                <h1>Organization</h1>
                <label>Membership Category</label>
                <select id="category">
                    <option value=""></option>
                    <option value="CM">Company</option>
                    <option value="NS">Educational</option>
                    <option value="GM">Government</option>
                    <option value="OM">Organizational</option>
                    <option value="IND">Individual</option>
                    <option value="RET">Retail</option>
                </select><br><br>
                <div id="continue1" class="continue-button">Continue</div><br>
            </form>
        </div>
    </div>
</div>
<div class="card">
    <div class="card-header" role="tab" id="headingTwo">
        <div class="mb-0">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseOne" class="collapsed">
                <h3>Step 2 of 4: Payment Information</h3>
                <div class="edit-step">Edit Step</div>
            </a>
        </div>
    </div>
    <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo" aria-expanded="false">
        <div class="card-block">
            <form>
                <h1>Organization</h1>
                <br><br>
                <div id="continue2" class="continue-button">Continue</div><br>
            </form>
        </div>
    </div>
</div>

Upvotes: 2

Views: 2961

Answers (1)

95faf8e76605e973
95faf8e76605e973

Reputation: 14201

Since you are already using jQuery in your project, you could just select all of the divs with the class panel-collapse collapse in and remove the class in

Codepen: https://codepen.io/anon/pen/yxMyqY

$(document).ready(function(){
    $("[data-parent='#accordion']").on("click", function(){
        var trigger = $(this);
        $(".panel-collapse.collapse.in").each(function(){
            if( trigger.attr("href") != ("#"+$(this).attr("id")) ){
            $(this).removeClass("in");
            } // condition returns false on iteration on div to be opened
        });   
    });
});

Upvotes: 3

Related Questions