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

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?