当可见时崩溃时,如何用单击的body隐藏我的倒塌3纳维布



我正在为代理机构创建一个WordPress网站,我将上班。我使用了Bootstrap 3.0,并创建了一个响应菜单。

如何隐藏何时折叠和可见的菜单(第二图),然后单击身体,菜单按钮更改颜色折叠是可见的吗?

bootstrap.js和jQuery连接在我的页脚中。

这是一个功能解决方案:

$(document).on('click touchstart', function (e) {
if ($(e.target).closest(".navbar-collapse").length === 0 && $(e.target).closest('[data-target=".navbar-collapse"]').length === 0) {
    $(".navbar-toggle").collapse('hide');
}
});

尝试此示例

<script type='text/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();
            }
        });
    });
</script>

更新

您可以将HTML选择器更改为所需的任何选择器,正文(如果您的身高足够),包装器或其他选择。一个干净的小提琴示例

这有效。当移动触摸屏上的任何地方接触时,它将关闭倒塌的Navbar。

$(document).on('touchend', function (event) {
    var clickover = $(event.target);
    var $navbar = $(".navbar-collapse");               
    var _opened = $navbar.hasClass("in");
    if (_opened === true && !clickover.hasClass("navbar-toggle")) {      
        $navbar.collapse('hide');
    }
});

这是另一种对我有用的方法。

我的场景:当我单击包含下拉列表的表单外的任何地方时,我想隐藏可折叠的。

  $(document).ready(function(){
      //check if collapsible is shown
      $(".collapse").on('shown.bs.collapse', function(){
        //then check if there was a click
        $(document).click(function(event) {
          //exclude the click was on the form 
          if (!$(event.target).hasClass("input-default")) {
              //then hide it
              $(".collapse").collapse('hide');
          }
        });
      });
  });

我认为您最好的方法是在媒体上做某事,或者使用JS的pherhaphs做某事,请在Bootstrap页面中签入Bootstrap页面,这是突破点并使用您感兴趣的<<<<<<<<<</p>

您不想始终收听如此错误的单击。您必须根据Navbar状态绑定和解开。这是我的Navbar-liolapse,它的ID是" Z",当它打开时,我会收听点击,当它关闭时,我不再听。我将对代码发表评论:

    //CALLBACK AFTER NAVBAR-COLLAPSE OPEN
    $('#z').on('shown.bs.collapse', function () {
        // HERE WE BIND THE CLICK TO THE HANDLER FUNCTION
        $(document).bind( "click", handler );
    })
    //CALLBACK AFTER NAVBAR-COLLAPSE CLOSE
    $('#z').on('hidden.bs.collapse', function () {
        // SINCE THE NAVBAR IS CLOSED WE DONT NEED TO LISTEN FOR CLICKS           ANYMORE
        $(document).unbind( "click", handler );
    })
    //THIS IS THE FUNCTION THAT GET FIRED
    var handler = function() {
        //LISTEN FOR CLICKS
        $(document).click(function(event) {
            //HERE FORM-CONTROL IS MY SEARCH BOX IN THE NAV SO I DONT WANT TO CLOSE
            //THE NAVBAAR IF THEY CLICK ON FONT-CONTROL, BUT ANYTHING BESIDE THAT WE CLOSE THE NAVBAR
            if (!$(event.target).hasClass("form-control")) {
                $('#z').collapse('hide');
            }
        });
    };  

这也是我的NAV-BAR代码:)

            <nav class="navbar navbar-default my-nav" data-spy="affix" id="nav" style="margin-bottom: 0">
            <div class="container-fluid">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#z" aria-expanded="false">
                        <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="#">-</a>
                </div>
                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="z">
                    <div class="navbar-form navbar-left my-navbar-left" role="search">
                        <div class="form-group">
                          <input id="searchbar" type="text" class="form-control" placeholder="Search for ads">
                        </div>
                    </div>
                    <ul class="nav navbar-nav navbar-right my-navbar-right">
                        <li><a class="tab-c tab-home"> <span class="text-to-icon">Posts</span> </a></li>
                    </ul>
                </div><!-- /.navbar-collapse -->
            </div><!-- /.container-fluid -->
        </nav>
$('.collapse').collapse('hide');

最新更新