单击时隐藏Twitter Bootstrap导航折叠

Tim*_*tor 132 html jquery twitter-bootstrap

这不是子菜单下拉列表,类别是图片中的类li:

在此输入图像描述

通过从响应式菜单中选择一个类别(模板只是一个页面),我想在点击时自动隐藏导航折叠.也可以漫步用作导航,因为模板只有一个页面.我寻求一个不影响它的解决方案,这里是菜单的HTML代码:

    <!-- NAVBAR
  ================================================== -->
<div class="navbar navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container">
      <a class="btn btn-navbar" 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="brand" href="#">Carousel Demo</a>
      <div class="nav-collapse">
        <ul class="nav" >
          <li class="active"><a href="#home">Home</a></li>
          <li><a href="#about">About</a></li>
          <li><a href="#portfolio">Portfolio</a></li>
          <li><a href="#services">Services</a></li>
          <li><a href="#contact">Contact</a></li>
          <!-- dropdown -->
        </ul>
        <!-- /.nav -->
      </div>
      <!--/.nav-collapse -->
    </div>
    <!-- /.container -->
  </div>
  <!-- /.navbar-inner -->
</div>
<!-- /.navbar -->
Run Code Online (Sandbox Code Playgroud)

Woo*_*aSh 159

试试这个:

$('.nav a').on('click', function(){
    $('.btn-navbar').click(); //bootstrap 2.x
    $('.navbar-toggle').click(); //bootstrap 3.x by Richard
    $('.navbar-toggler').click(); //bootstrap 4.x
});
Run Code Online (Sandbox Code Playgroud)

  • 这导致导航栏出现问题.最好使用$('.nav-collapse').collapse('hide'); 单击事件而不是单击切换按钮. (40认同)
  • 这个技巧导致桌面上的一个错误... onclick导航切换高度也... (12认同)
  • 更新:bootstrap 3的常用选择器是.navbar-toggle,所以$(".navbar-toggle").click(); (8认同)
  • 仅供参考,这并非在所有情况下都有效.如果窗口已调整大小并显示移动菜单,则默认情况下将打开. (7认同)
  • 当导航栏在"桌面"模式下打开时,它将闪烁或关闭,然后在使用时重新打开. (7认同)
  • 实际上,`$('#navbar').崩溃('隐藏');`做诀窍! (2认同)

Zu1*_*779 131

我只是在每个链接上复制btn-navbar(data-toggle="collapse" data-target=".nav-collapse.in")的2个属性,如下所示:

<div class="nav-collapse">
  <ul class="nav" >
    <li class="active"><a href="#home" data-toggle="collapse" data-target=".nav-collapse.in">Home</a></li>
    <li><a href="#about" data-toggle="collapse" data-target=".nav-collapse.in">About</a></li>
    <li><a href="#portfolio" data-toggle="collapse" data-target=".nav-collapse.in">Portfolio</a></li>
    <li><a href="#services" data-toggle="collapse" data-target=".nav-collapse.in">Services</a></li>
    <li><a href="#contact" data-toggle="collapse" data-target=".nav-collapse.in">Contact</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

Bootstrap 4 Navbar中,in已更改为,show因此语法将为:

data-toggle="collapse" data-target=".navbar-collapse.show"

  • @JamesBrewer为了避免桌面版本上的崩溃动画,将`.in`添加到数据目标:`data-toggle ="collapse"data-target =".nav-collapse.in"` (33认同)
  • 不要忘记使用.navbar-collapse替换.nav-collapse for bootstrap 3 (23认同)
  • 将`data-toggle`和`data-target`添加到<li>是更清晰的解决方案.谢谢. (13认同)
  • 在移动设备上运行良好,但也会导致桌面上的导航栏折叠动画,这是不可取的. (9认同)
  • 这应该是公认的答案!谢谢您的发布! (3认同)
  • 将其放在&lt;ul data-toggle =“ collapse” data-target =“。navbar-collapse.show”&gt;上可用于其下的所有&lt;li&gt;,您可以避免重复此行。 (2认同)

小智 60

$(function() {
    $('.nav a').on('click', function(){ 
        if($('.navbar-toggle').css('display') !='none'){
            $('.navbar-toggle').trigger( "click" );
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更好的解决方案,因为它可以防止链接可见时出现故障. (6认同)

Vad*_* P. 44

最好使用默认的collapse.js方法:

$('.nav a').click(function(){
    $('.nav-collapse').collapse('hide');
});
Run Code Online (Sandbox Code Playgroud)

  • 绝对比使用点击功能更好!最好通过仅与您想要改变的事物进行交互来将风险降至最低.单击事件可能导致执行其他不需要的功能.不知道这种崩溃的方法,谢谢. (4认同)

pur*_*ion 31

更简单,没有舔重复代码,只需将data-toggle="collapse"data-target=".nav-collapse"属性应用于导航器本身:

<nav class="nav-collapse" data-toggle="collapse" data-target=".nav-collapse">
  <ul class="nav">
    <li class="active"><a href="#home">Home</a></li>
    <li><a href="#about">About</a></li>
    <li><a href="#portfolio">Portfolio</a></li>
    <li><a href="#services">Services</a></li>
    <li><a href="#contact">Contact</a></li>
  </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

超级干净,无需JavaScript.效果很好,只要你的nav a元素有足够的填充肥胖手指,并且e.stopPropagation()当用户点击nav a项目时你不会阻止点击事件冒泡.

  • 我建议修改目标以包含_in_类.这将防止桌面版本表现得很奇怪.`数据目标= "nav-collapse.in"` (2认同)

小智 16

更新你的

<li>
  <a href="#about">About</a>
</li>
Run Code Online (Sandbox Code Playgroud)

<li>
  <a data-toggle="collapse" data-target=".nav-collapse" href="#about">About</a>
</li>
Run Code Online (Sandbox Code Playgroud)

这个简单的改变对我有用.

参考:https://github.com/twbs/bootstrap/issues/9013


Cha*_*ass 13

每当用户点击身体的任何位置时,都应关闭导航 - 而不仅仅是导航元素.Say菜单已打开,但用户在页面正文中单击.用户希望看到菜单关闭.

您还必须确保切换按钮可见,否则在菜单中会看到跳转.

$(document).ready(function() { 

$("body").click(function(event) {
        // only do this if navigation is visible, otherwise you see jump in navigation while collapse() is called 
         if ($(".navbar-collapse").is(":visible") && $(".navbar-toggle").is(":visible") ) {
            $('.navbar-collapse').collapse('toggle');
        }
  });

});
Run Code Online (Sandbox Code Playgroud)


小智 13

在Bootstrap 3.3.6上测试 - 工作!

$('.nav a').click(function () {
    $('.navbar-collapse').collapse('hide');
});
Run Code Online (Sandbox Code Playgroud)


Get*_*hes 7

试试这个> Bootstrap 3

很棒的我正在寻找的东西,但是我与javascript和bootstrap模式有一些冲突,这解决了它.

    $(function() {
    $('.navbar-nav').on('click', function(){ 
        if($('.navbar-header .navbar-toggle').css('display') !='none'){
            $(".navbar-header .navbar-toggle").trigger( "click" );
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Mic*_*abe 5

这对我很有用.它与接受的答案相同,但修复了与桌面/平板电脑视图相关的问题

$('.navbar-nav a').on('click', function () {
        if (window.innerWidth <= 768) {
            $(".navbar-toggle").click();
        }
    });
Run Code Online (Sandbox Code Playgroud)


小智 5

$('.nav a').click(function () {
    $('.navbar-collapse').collapse('hide');
});
Run Code Online (Sandbox Code Playgroud)