javascript - 在按钮外部单击时,如何在我的菜单中关闭动画折叠

标签 javascript jquery html css twitter-bootstrap-3

我的导航栏是这样的:

http://jsfiddle.net/Hg4Ts/3/

我的 html 代码:

<div class="wrapper">
    <div class="navbar navbar-default" role="navigation">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li class="active"><a href="./">Default</a></li>
            <li><a href="../navbar-static-top/">Static top</a></li>
            <li><a href="../navbar-fixed-top/">Fixed top</a></li>
          </ul>
        </div><!--/.nav-collapse -->
    </div>
</div>

我的 JavaScript 代码:

$(document).ready(function () {
    function CloseNav() {
        $(".navbar-collapse").stop().css({ 'height': '1px' }).removeClass('in').addClass("collapse");
        $(".navbar-toggle").stop().removeClass('collapsed');
    }

    $('html').click(function (event) {
        var clickover = $(event.target);
        var _opened = $(".navbar-collapse").hasClass("navbar-collapse in");
        if (_opened === true && !clickover.hasClass("navbar-toggle")) {
            CloseNav();
        }

    });
});

当在按钮外部单击时,如何在我的菜单中放置动画折叠关闭。单击按钮外部但没有动画效果时关闭。如何让菜单按钮只有在折叠打开时才改变颜色?

最佳答案

此解决方案可能适合您。将您的 CloseNav() 函数切换到以下位置:

    function CloseNav() {
        $(".navbar-collapse").stop().animate({'height': 0},300, function () {
            $('.navbar-collapse').removeClass('in').addClass("collapse");
        });
        $(".navbar-toggle").stop().removeClass('collapsed');
    };

看起来只需将 .collapse 类添加到导航栏就会立即切换高度。如果您制作动画然后添加类,它会创建您想要的向上滑动效果。

fiddle demo

关于javascript - 在按钮外部单击时,如何在我的菜单中关闭动画折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21312781/

相关文章:

javascript - Jmeter发送带双引号的Cookie

javascript - 如何打开多个 WebSocket 流

javascript - jquery 不选择所选 div 的子元素

jQuery 使用tinyMCE RTE 预填写表单

javascript - 使用 JavaScript 动态显示/隐藏单选按钮组的单选按钮

javascript - jquery 下拉菜单不起作用

javascript - 监听textarea的值变化

javascript - 如何从使用循环创建的表单中选择设置输入字段的值

jquery 设置表格行焦点

html - 无法将背景图像显示到浏览器的全屏并使其响应