Bootstrap Dropdown Sub Menu Missing


Answer :

Updated 2018

The dropdown-submenu has been removed in Bootstrap 3 RC. In the words of Bootstrap author Mark Otto..

"Submenus just don't have much of a place on the web right now, especially the mobile web. They will be removed with 3.0" - https://github.com/twbs/bootstrap/pull/6342

But, with a little extra CSS you can get the same functionality.

Bootstrap 4 (navbar submenu on hover)

.navbar-nav li:hover > ul.dropdown-menu {     display: block; } .dropdown-submenu {     position:relative; } .dropdown-submenu>.dropdown-menu {     top:0;     left:100%;     margin-top:-6px; } 

Navbar submenu dropdown hover
Navbar submenu dropdown hover (right aligned)
Navbar submenu dropdown click (right aligned)
Navbar dropdown hover (no submenu)


Bootstrap 3

Here is an example that uses 3.0 RC 1: http://bootply.com/71520

Here is an example that uses Bootstrap 3.0.0 (final): http://bootply.com/86684

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; } .dropdown-submenu:hover>a:after {     border-left-color:#ffffff; } .dropdown-submenu.pull-left {     float:none; } .dropdown-submenu.pull-left>.dropdown-menu {     left:-100%;     margin-left:10px;     -webkit-border-radius:6px 0 6px 6px;     -moz-border-radius:6px 0 6px 6px;     border-radius:6px 0 6px 6px; } 

Sample Markup

<div class="navbar navbar-default navbar-fixed-top" role="navigation">     <div class="container">         <div class="navbar-header">             <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">                   <span class="sr-only">Toggle navigation</span>                 <span class="icon-bar"></span>                 <span class="icon-bar"></span>                 <span class="icon-bar"></span>             </button>         </div>         <div class="collapse navbar-collapse navbar-ex1-collapse">             <ul class="nav navbar-nav">                 <li class="menu-item dropdown">                     <a href="#" class="dropdown-toggle" data-toggle="dropdown">Drop Down<b class="caret"></b></a>                     <ul class="dropdown-menu">                         <li class="menu-item dropdown dropdown-submenu">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 1</a>                             <ul class="dropdown-menu">                                 <li class="menu-item ">                                     <a href="#">Link 1</a>                                 </li>                                 <li class="menu-item dropdown dropdown-submenu">                                     <a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 2</a>                                     <ul class="dropdown-menu">                                         <li>                                             <a href="#">Link 3</a>                                         </li>                                     </ul>                                 </li>                             </ul>                         </li>                     </ul>                 </li>             </ul>         </div>     </div> </div> 

P.S. - Example in navbar that adjusts left position: http://bootply.com/92442


@skelly solution is good but will not work on mobile devices as the hover state won't work.

I have added a little bit of JS to get the BS 2.3.2 behavior back.

PS: it will work with the CSS you get there: http://bootply.com/71520 though you can comment the following part:

CSS:

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

JS:

$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {   // Avoid following the href location when clicking   event.preventDefault();   // Avoid having the menu to close when clicking   event.stopPropagation();   // If a menu is already open we close it   $('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');   // opening the one you clicked on   $(this).parent().addClass('open'); }); 

The result can be found on my WordPress theme (Top of the page): http://shprinkone.julienrenaux.fr/


Until today (9 jan 2014) the Bootstrap 3 still not support sub menu dropdown.

I searched Google about responsive navigation menu and found this is the best i though.

It is Smart menus http://www.smartmenus.org/

I hope this is the way out for anyone who want navigation menu with multilevel sub menu.

update 2015-02-17 Smart menus are now fully support Bootstrap element style for submenu. For more information please look at Smart menus website.


Comments

Popular posts from this blog

Chemistry - Bond Angles In NH3 And NCl3

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Change The Font Size Of Visual Studio Solution Explorer