mamgoo
mamgoo

Reputation: 79

Bootstrap vertical menu - close current menu item when click to another

I use Bootstrap and found a pretty good vertical menu. How can i do it, that when i click e.g. item 'Menu A', that all others open items, like Menu B, Menu C, will be closed? Heres is me Fiddle: Bootstrap Vertical Menu

<div class="nav-side-menu">
    <div class="brand">Brand Logo</div>
    <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>

        <div class="menu-list">

            <ul id="menu-content" class="menu-content collapse out">
                <li>
                  <a href="#">
                  <i class="fa fa-dashboard fa-lg"></i> Dashboard
                  </a>
                </li>

                <li  data-toggle="collapse" data-target="#products" class="collapsed active">
                  <a href="#"><i class="fa fa-gift fa-lg"></i> Menu A <span class="arrow"></span></a>
                </li>
                <ul class="sub-menu collapse" id="products">
                    <li class="active"><a href="#">CSS3 Animation</a></li>
                    <li><a href="#">General</a></li>
                    <li><a href="#">Buttons</a></li>
                    <li><a href="#">Tabs & Accordions</a></li>
                    <li><a href="#">Typography</a></li>
                    <li><a href="#">FontAwesome</a></li>
                    <li><a href="#">Slider</a></li>
                    <li><a href="#">Panels</a></li>
                    <li><a href="#">Widgets</a></li>
                    <li><a href="#">Bootstrap Model</a></li>
                </ul>


                <li data-toggle="collapse" data-target="#service" class="collapsed">
                  <a href="#"><i class="fa fa-globe fa-lg"></i> Menu B <span class="arrow"></span></a>
                </li>  
                <ul class="sub-menu collapse" id="service">
                  <li>New Service 1</li>
                  <li>New Service 2</li>
                  <li>New Service 3</li>
                </ul>


                <li data-toggle="collapse" data-target="#new" class="collapsed">
                  <a href="#"><i class="fa fa-car fa-lg"></i> Menu C <span class="arrow"></span></a>
                </li>
                <ul class="sub-menu collapse" id="new">
                  <li>New New 1</li>
                  <li>New New 2</li>
                  <li>New New 3</li>
                </ul>


                 <li>
                  <a href="#">
                  <i class="fa fa-user fa-lg"></i> Profile
                  </a>
                  </li>

                 <li>
                  <a href="#">
                  <i class="fa fa-users fa-lg"></i> Users
                  </a>
                </li>
            </ul>
     </div>
</div>

Thanks!

Upvotes: 0

Views: 1348

Answers (2)

vijayP
vijayP

Reputation: 11502

please have a look at updated fiddle:

https://jsfiddle.net/rpg4gd88/3/

$('ul#menu-content > ul').on('show.bs.collapse', function (e,obj) {
    $("ul#menu-content > ul").not(this).removeClass("in");
    var currentHead = $(this).prev("li");
    $("ul#menu-content > li").not(currentHead).removeClass("active");
    $(currentHead).addClass("active");
})

we can hook our code to show.bs.collapse event to close other previously opened menu.

Upvotes: 1

smdsgn
smdsgn

Reputation: 1746

You can do it like this

$(".menu-content > li").click(function() {
    $(".menu-content").find(".sub-menu").not($(this).next('.sub-menu')).removeClass("in");
});

Upvotes: 3

Related Questions