引导3仍然在RC,但我只是试图实现它。我不知道怎么放一个子菜单类。甚至css中没有类,甚至新的文档也没有提到它

2分钟就到了。用类名作为下拉菜单


当前回答

@skelly解决方案是很好的,但不会在移动设备上工作,因为悬停状态不会工作。

我添加了一点JS来得到BS 2.3.2的行为。

PS:它将与你得到的CSS一起工作:http://bootply.com/71520尽管你可以评论以下部分:

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');
});

结果可以在我的WordPress主题(页面顶部)上找到:http://shprinkone.julienrenaux.fr/

其他回答

Shprink的代码对我帮助最大,但为了避免下拉菜单离开屏幕,我将其更新为:

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');

    var menu = $(this).parent().find("ul");
    var menupos = $(menu).offset();

    if (menupos.left + menu.width() > $(window).width()) {
        var newpos = -$(menu).width();
        menu.css({ left: newpos });    
    } else {
        var newpos = $(this).parent().width();
        menu.css({ left: newpos });
    }

});

CSS: FROM background-color: #eeeeee TO background-color: #c5c5c5 -白色字体和浅色背景看起来不太好。

.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #c5c5c5;
  border-color: #428bca;
}

我希望这能像帮助我一样帮助别人!

但是我希望Bootstrap能尽快把subs功能加回来。

@skelly解决方案是很好的,但不会在移动设备上工作,因为悬停状态不会工作。

我添加了一点JS来得到BS 2.3.2的行为。

PS:它将与你得到的CSS一起工作:http://bootply.com/71520尽管你可以评论以下部分:

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');
});

结果可以在我的WordPress主题(页面顶部)上找到:http://shprinkone.julienrenaux.fr/

在2022年的Bootstrap 5中,这个GitHub回购中的JS代码是子菜单的最终解决方案:https://github.com/dallaslu/bootstrap-5-multi-level-dropdown。

评论Skelly的真正有用的解决方案:在Bootstrap-sass 3.3.6,实用程序。Scss,第19行:.pull-left有float:left !重要。因此,我建议在他的CSS中也使用!important:

.dropdown-submenu.pull-left {
    float:none !important;
}

几天前我遇到了这个问题。我尝试了许多解决方案,没有一个真正为我工作在最后,我最终创建了一个扩展/覆盖下拉代码的引导。它是原始代码的副本,只是修改了closeMenus函数。

我认为这是一个很好的解决方案,因为它不影响bootstrap js的核心类。

你可以在gihub上查看:https://github.com/djokodonev/bootstrap-multilevel-dropdown