Skip to content Skip to sidebar Skip to footer

How To Close All Other Open Sub-menu When Other Parent Menu Item Is Clicked?

I am using this code LINK. When i click on Parent Menu like Services then sub-menu of services menu will be open but when i click on other menu then other sub menu will also open.

Solution 1:

Basically you need to know the concept of not() in jQuery, so that you can hide the element except clicked one. Here is the working example.

$('#menu-content').children("li").on('click', function(){
  $("li[data-toggle='collapse']").not(this).addClass('collapsed');
  $("li[data-toggle='collapse']").not(this).next('ul').removeClass('in');
  //alert('clicked');
});
.nav-side-menu {
  overflow: auto;
  font-family: verdana;
  font-size: 12px;
  font-weight: 200;
  background-color: #2e353d;
  position: fixed;
  top: 0px;
  width: 300px;
  height: 100%;
  color: #e1ffff;
}
.nav-side-menu.brand {
  background-color: #23282e;
  line-height: 50px;
  display: block;
  text-align: center;
  font-size: 14px;
}
.nav-side-menu.toggle-btn {
  display: none;
}
.nav-side-menuul,
.nav-side-menuli {
  list-style: none;
  padding: 0px;
  margin: 0px;
  line-height: 35px;
  cursor: pointer;
  /*    
    .collapsed{
       .arrow:before{
                 font-family: FontAwesome;
                 content: "\f053";
                 display: inline-block;
                 padding-left:10px;
                 padding-right: 10px;
                 vertical-align: middle;
                 float:right;
            }
     }
*/
}
.nav-side-menuul:not(collapsed) .arrow:before,
.nav-side-menuli:not(collapsed) .arrow:before {
  font-family: FontAwesome;
  content: "\f078";
  display: inline-block;
  padding-left: 10px;
  padding-right: 10px;
  vertical-align: middle;
  float: right;
}
.nav-side-menuul.active,
.nav-side-menuli.active {
  border-left: 3px solid #d19b3d;
  background-color: #4f5b69;
}
.nav-side-menuul.sub-menuli.active,
.nav-side-menuli.sub-menuli.active {
  color: #d19b3d;
}
.nav-side-menuul.sub-menuli.activea,
.nav-side-menuli.sub-menuli.activea {
  color: #d19b3d;
}
.nav-side-menuul.sub-menuli,
.nav-side-menuli.sub-menuli {
  background-color: #181c20;
  border: none;
  line-height: 28px;
  border-bottom: 1px solid #23282e;
  margin-left: 0px;
}
.nav-side-menuul.sub-menuli:hover,
.nav-side-menuli.sub-menuli:hover {
  background-color: #020203;
}
.nav-side-menuul.sub-menuli:before,
.nav-side-menuli.sub-menuli:before {
  font-family: FontAwesome;
  content: "\f105";
  display: inline-block;
  padding-left: 10px;
  padding-right: 10px;
  vertical-align: middle;
}
.nav-side-menuli {
  padding-left: 0px;
  border-left: 3px solid #2e353d;
  border-bottom: 1px solid #23282e;
}
.nav-side-menulia {
  text-decoration: none;
  color: #e1ffff;
}
.nav-side-menuliai {
  padding-left: 10px;
  width: 20px;
  padding-right: 20px;
}
.nav-side-menuli:hover {
  border-left: 3px solid #d19b3d;
  background-color: #4f5b69;
  -webkit-transition: all 1s ease;
  -moz-transition: all 1s ease;
  -o-transition: all 1s ease;
  -ms-transition: all 1s ease;
  transition: all 1s ease;
}
@media (max-width: 767px) {
  .nav-side-menu {
    position: relative;
    width: 100%;
    margin-bottom: 10px;
  }
  .nav-side-menu.toggle-btn {
    display: block;
    cursor: pointer;
    position: absolute;
    right: 10px;
    top: 10px;
    z-index: 10!important;
    padding: 3px;
    background-color: #ffffff;
    color: #000;
    width: 40px;
    text-align: center;
  }
  .brand {
    text-align: left !important;
    font-size: 22px;
    padding-left: 20px;
    line-height: 50px!important;
  }
}
@media (min-width: 767px) {
  .nav-side-menu.menu-list.menu-content {
    display: block;
  }
}
body {
  margin: 0px;
  padding: 0px;
}
<linkhref="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"id="bootstrap-css"><scriptsrc="//code.jquery.com/jquery-1.11.1.min.js"></script><scriptsrc="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script><!------ Include the above in your HEAD tag ----------><linkhref="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" ><divclass="nav-side-menu"><divclass="brand">Brand Logo</div><iclass="fa fa-bars fa-2x toggle-btn"data-toggle="collapse"data-target="#menu-content"></i><divclass="menu-list"><ulid="menu-content"class="menu-content collapse out"><li><ahref="#"><iclass="fa fa-dashboard fa-lg"></i> Dashboard
                  </a></li><lidata-toggle="collapse"data-target="#products"class="collapsed active"><ahref="#"><iclass="fa fa-gift fa-lg"></i> UI Elements <spanclass="arrow"></span></a></li><ulclass="sub-menu collapse"id="products"><liclass="active"><ahref="#">CSS3 Animation</a></li><li><ahref="#">General</a></li><li><ahref="#">Buttons</a></li><li><ahref="#">Tabs & Accordions</a></li><li><ahref="#">Typography</a></li><li><ahref="#">FontAwesome</a></li><li><ahref="#">Slider</a></li><li><ahref="#">Panels</a></li><li><ahref="#">Widgets</a></li><li><ahref="#">Bootstrap Model</a></li></ul><lidata-toggle="collapse"data-target="#service"class="collapsed"><ahref="#"><iclass="fa fa-globe fa-lg"></i> Services <spanclass="arrow"></span></a></li><ulclass="sub-menu collapse"id="service"><li>New Service 1</li><li>New Service 2</li><li>New Service 3</li></ul><lidata-toggle="collapse"data-target="#new"class="collapsed"><ahref="#"><iclass="fa fa-car fa-lg"></i> New <spanclass="arrow"></span></a></li><ulclass="sub-menu collapse"id="new"><li>New New 1</li><li>New New 2</li><li>New New 3</li></ul><li><ahref="#"><iclass="fa fa-user fa-lg"></i> Profile
                  </a></li><li><ahref="#"><iclass="fa fa-users fa-lg"></i> Users
                  </a></li></ul></div></div>

Solution 2:

Another version of code which works for me.

$(".submenu").not('.submenu-child').click(function()
{
    $(".submenu").not(this).find(".collapse").collapse('hide');

});

Where submenu class is applied to parent menu and submenu-child class applied to submenus.

Post a Comment for "How To Close All Other Open Sub-menu When Other Parent Menu Item Is Clicked?"