Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Open only one accordian collapse, bootstrap

Using Bootstrap...

How to make this so that only one accordion collapsable DIV is open at a time. When one is clicked open, the other should close (if it is open?)

Looking for the most simple and streamlined solution...

<div class="row" id="nav-top">

    <div class="col-md-6">
        <div>
            <a href="#" data-toggle="collapse" data-target="#signin" >SIGN-IN</a>
        </div>
        <div id="signin" class="collapse">
            FORM HERE           
        </div>
    </div>


    <div class="col-md-6">
        <div>
            <a href="#" data-toggle="collapse" data-target="#register">REGISTER</a>
        </div>
        <div id="register" class="collapse">
            FORM HERE
        </div>
    </div>

</div>
like image 472
Davo Avatar asked Jan 28 '26 12:01

Davo


1 Answers

You have to use show.bs.collapse event which is fired immediately when the collapse element starts showing. Then you can hide other collapsible menus, Like this:

// when showing signin accordion
$('#signin').on('show.bs.collapse', function () {

  // hide register accordion
  $('#register').collapse('hide');

});

$('#register').on('show.bs.collapse', function () {

    $('#signin').collapse('hide');

});

But If you have multiple accordion you can't call this event in each one of them, You have to use a class to select them all and call show.bs.collapse only one time, Here is a working example:

$( document ).ready(function() {

  $('.collapse').on('show.bs.collapse', function () {
  
    // hide all accordion except the clicked one
    $('.collapse').not(this).collapse('hide');
    
  });

});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container">

<div class="row" id="nav-top">

    <div class="col-md-4">
        <div>
            <a href="#"  data-toggle="collapse" data-target="#signin" >ABOUT</a>
        </div>
        <div id="signin" class="collapse">
            FORM HERE           
        </div>
    </div>


    <div class="col-md-4">
        <div>
            <a href="#" data-toggle="collapse" data-target="#register" >REGISTER</a>
        </div>
        <div id="register" class="collapse">
            FORM HERE
        </div>
    </div>
    
    <div class="col-md-4">
        <div>
            <a href="#"  data-toggle="collapse" data-target="#about" >SIGN-IN</a>
        </div>
        <div id="about" class="collapse">
            FORM HERE           
        </div>
    </div>

</div>

</div>
like image 177
YouneL Avatar answered Jan 31 '26 03:01

YouneL



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!