Bootstrap 3隐藏菜单项上的下拉菜单单击

dou*_*lin 15 jquery uinavigationbar responsive-design twitter-bootstrap drop-down-menu

看看小提琴.我有一个基本的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>
Run Code Online (Sandbox Code Playgroud)

导航项链接到页面上的部分,而不是不同的页面,所以我需要下拉列表以隐藏点击.

每当我尝试使用jQuery手动切换下拉列表时,它会混淆下拉切换按钮的未来功能:

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

对此有更好的解决方法吗?

Cha*_*rly 24

如果你想在没有JavaScript的情况下这样做,你可以简单地将数据目标和数据切换添加到每个列表项,如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

对于导航栏,当有切换按钮时,这实际上仅适用于移动视图模式.暴露导航栏时会发生奇怪的事情(切换按钮未显示).

  • 或者使用data-target =".in"而不是data-target =".nav-collapse"以避免在正常浏览器分辨率期间显示/隐藏菜单. (17认同)

Glo*_*ria 8

改变这个:

$(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();
    });
  });
Run Code Online (Sandbox Code Playgroud)

对此:

$(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");
    });
});
Run Code Online (Sandbox Code Playgroud)

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