Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
152
rated 0 times [  158] [ 6]  / answers: 1 / hits: 26631  / 10 Years ago, tue, july 22, 2014, 12:00:00

I am trying to create submenus within Bootstrap 3 (which we all know have been removed) and I would like to display the 2nd and 3rd levels of the menu on a click instead of a hover.



For some reason every time I click on 2nd level or third level it simply closes the dropdown menu as if it is toggling the regular bootstrap open/close function.



I need to work in a manor...
1.) Click on Top level - display down-drop items
2.) Click on item from drop-down - displays 2nd level items
3.) Click on item from 2nd level - displays 3rd level items



basically i want to activate this css class



.dropdown-submenu:hover>.dropdown-menu{display:block;}


on a click instead of a hover.



Currently i have tried the following



Link To Fiddle
http://jsfiddle.net/Tenacity/ejLDg/1/



Preferably can you should your solution on the fiddle. Feel free to rip this entire example apart to achieve a solution as i'm completely stuck. Thanks in advance.



The HTML



<nav class=navbar navbar-default navbar-fixed-top role=navigation>
<div class=navbar-header>
<button type=button class=navbar-toggle data-toggle=collapse data-target=#bs-example-navbar-collapse-1>
<span class=sr-only>Toggle navigation</span>
<span class=icon-bar></span>
<span class=icon-bar></span>
<span class=icon-bar></span>
</button>
<a class=navbar-brand href=index.html>Your Logo Here</a>
</div>
<div class=collapse navbar-collapse id=bs-example-navbar-collapse-1>
<ul class=nav navbar-nav>
<li class=dropdown>
<a href=# class=dropdown-toggle data-toggle=dropdown id=test1>Top Level <b class=caret></b></a>
<ul class=dropdown-menu>



<li class=dropdown-submenu>
<a tabindex=-1 href=#>To 2nd</a>
<ul class=dropdown-menu>
<li class=dropdown-submenu>
<a href=#>2nd to 3rd</a>
<ul class=dropdown-menu>
<li><a href=#>3rd level</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</nav>


The CSS



.dropdown-submenu{position:relative;}
.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
.dropdown-submenu:hover>.dropdown-menu{display:block;}
.dropdown-submenu>a:after{display:block;content: ;float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}


The JS



$(document).ready(function() {
$('.dropdown-submenu').on('click', function(){
$(this).parent().addClass('open');
$(.btn-navbar).click();
alert(clicked);
});
});


Thanks in advance :D


More From » jquery

 Answers
17

take a look:



$( .dropdown-submenu ).click(function(event) {
// stop bootstrap.js to hide the parents
event.stopPropagation();
// hide the open children
$( this ).find(.dropdown-submenu).removeClass('open');
// add 'open' class to all parents with class 'dropdown-submenu'
$( this ).parents(.dropdown-submenu).addClass('open');
// this is also open (or was)
$( this ).toggleClass('open');
});


demo: http://jsfiddle.net/ejLDg/18/


[#70092] Monday, July 21, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kurtisl

Total Points: 559
Total Questions: 110
Total Answers: 97

Location: Tokelau
Member since Sun, May 7, 2023
1 Year ago
;