【问题标题】:Bootstrap 3 Hide Dropdown Menu on Menu Item ClickBootstrap 3在菜单项单击时隐藏下拉菜单
【发布时间】:2013-08-11 19:15:07
【问题描述】:

Check out the fiddle。我有一个基本的 Bootstrap 3 响应式导航,如下所示:

    <div id="navbar" class="navbar navbar-fixed-top navbar-inverse">
        <div class="container">
            <a id="navbar-toggle" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </a>

            <a class="navbar-brand" href="#">Title Title Title</a>

            <div id="nav-collapse" class="nav-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a href="#option1">Option 1</a></li>
                    <li><a href="#option2">Option 2</a></li>
                    <li><a href="#option3">Option 3</a></li>
                </ul>
            </div>
        </div>
    </div>

导航项链接到页面上的部分,而不是不同的页面,所以我需要下拉菜单在点击时隐藏。

每当我尝试使用 jQuery 手动切换下拉菜单时,它都会破坏下拉切换按钮的未来功能:

$("#navbar li a").click(function(event) {
    // check if window is small enough so dropdown is created
    $("#navbar-toggle").is(":visible")
        $("#nav-collapse").toggle();
});

有没有更好的解决办法?

【问题讨论】:

    标签: jquery twitter-bootstrap drop-down-menu responsive-design uinavigationbar


    【解决方案1】:

    如果您想在没有 JavaScript 的情况下执行此操作,您只需将 data-target 和 data-toggle 添加到每个列表项,如下所示:

    <li data-toggle="collapse" data-target=".nav-collapse"><a href="#option1">Option 1</a></li>
    <li data-toggle="collapse" data-target=".nav-collapse"><a href="#option2">Option 2</a></li>
    <li data-toggle="collapse" data-target=".nav-collapse"><a href="#option3">Option 3</a></li>
    

    对于导航栏,这实际上只在有切换按钮的移动视图模式下有效。显示导航栏时会发生奇怪的事情(未显示切换按钮)。

    【讨论】:

    • 或使用 data-target=".in" 而不是 data-target=".nav-collapse" 以避免在正常浏览器分辨率期间显示/隐藏菜单。
    【解决方案2】:

    改变这个:

    $(document).ready(function () {
        $("#navbar li a").click(function(event) {
            // check if window is small enough so dropdown is created
            $("#navbar-toggle").is(":visible")
                $("#nav-collapse").toggle();
        });
      });
    

    到这里:

    $(document).ready(function () {
        $("#navbar li a").click(function(event) {
            // check if window is small enough so dropdown is created
        $("#nav-collapse").removeClass("in").addClass("collapse");
        });
    });
    

    http://jsfiddle.net/fw7vh/4/

    【讨论】:

      【解决方案3】:

      我不知道为什么在折叠的导航栏中单击/点击菜单下拉菜单中的菜单项不会自动切换 Bootstrap 中的菜单。可能有一种更优雅的方法可以做到这一点,但是,这是我修复它的方法(使用 Bootstrap 3.0.3):

      <li class="visible-xs">
        <a href="#" data-toggle="collapse" data-target=".navbar-collapse">Link</a>
      </li>
      <li class="hidden-xs">
        <a href="#">Link</a>
      </li>
      

      基本上,有两个版本的链接,一个在显示菜单切换时出现(浏览器宽度 768 像素) .如果你不添加第二种类型,当它不存在时尝试切换菜单时,它会显示一个奇怪的幻影动画水平滚动条。

      【讨论】:

        【解决方案4】:

        我是 Bootstrap 的新手,但是对上面的代码做了一些小改动,它现在可以很好地工作了。请记住,当您单击徽标时,下拉菜单也应该关闭,这就是我添加 navbar-header 的原因!

        jQuery(document).ready(function () {
                jQuery(".nav a, .navbar-header a").click(function(event) {
                        // check if window is small enough so dropdown is created
                       jQuery(".navbar-collapse").removeClass("in").addClass("collapse");
                });
        });
        

        【讨论】:

          【解决方案5】:

          使用 Bootstrap 3.3.4,我意识到我的旧方法不再有效。更新为:

          if ($('div.navbar-collapse').hasClass('in')) {
              $('button.navbar-toggle:visible').click();
          }
          

          【讨论】:

            【解决方案6】:

            如果需要在 bootstrap 4 上解决这个问题,试试这个 jquery sn-p。它以这种方式工作:如果导航栏被展开,什么也不会发生(正常的引导行为)。如果导航栏被折叠,在点击事件之后,关闭导航栏。在引导程序 4 上工作

              $(".navbar a").click(function(event) {
                  // check if window is small enough so dropdown is created
                  var toggle = $(".navbar-toggler").is(":visible");
                  if (toggle) {
                      $(".navbar-collapse").collapse('hide');
                  }
              });
            

            【讨论】:

              猜你喜欢
              • 2015-10-11
              • 2017-04-25
              • 1970-01-01
              • 2012-04-20
              • 2022-11-03
              • 1970-01-01
              • 1970-01-01
              • 2015-02-03
              • 1970-01-01
              相关资源
              最近更新 更多