【问题标题】:Bootstrap Mobile menu toggle class when menu open and close菜单打开和关闭时的 Bootstrap Mobile 菜单切换类
【发布时间】:2017-09-23 22:03:48
【问题描述】:

我正在尝试在 Bootstrap v3.3.4 移动菜单上打开菜单时添加一个 X 图标,并且如果在菜单外部单击它应该关闭并将图标更改为默认值。

但我已成功在菜单上添加了 X 图标,但未能添加点击外部操作。单击外部时关闭菜单但不更改图标

$(document).ready(function () {
  $(".navbar-toggle").on("click", function () {
    $(this).toggleClass("active");
  });
   $(document).on('click',function(){
      if ($('.navbar-toggle').hasClass('active') ) {
        $('.collapse').collapse('hide');
        $(this).toggleClass("active");
      }
  });
});

这是我的代码的DEMO,请看一下。

【问题讨论】:

  • 很可能,您需要监听 Bootstrap 事件以进行崩溃:version 4 或 version 3
  • 引导 v3.3.4
  • 这些是链接 - 请参阅与您的 BS 版本匹配的链接(没有专门针对 3.3.4 的文档 - 阅读最新的 3.x 文档)。

标签: jquery css twitter-bootstrap


【解决方案1】:

$(this).toggleClass("active"); 内的 $(document).on("click") 将不包含 .navbar-toggle 类。但它将包含document 元素。因为this 在另一个函数中。

此外,您必须检查您是否没有单击元素本身。如果你删除

if(!$(event.target).closest('.navbar-toggle').length)

类被添加,但直接被删除。 if ($('.navbar-toggle').hasClass('active') ) 返回 true,因为您之前添加了该类几行。所以它会删除它。

$(document).ready(function () {
  $(".navbar-toggle").on("click", function () {
    $(this).toggleClass("active");
  });
   $(document).on('click',function(){
   if(!$(event.target).closest('.navbar-toggle').length) {
      if ($('.navbar-toggle').hasClass('active') ) {
        $('.collapse').collapse('hide');
        $(".navbar-toggle").toggleClass("active");
      }
      }
  });
  
});
.navbar-toggle .icon-bar:nth-of-type(2) {
	  top: 1px;
}

.navbar-toggle .icon-bar:nth-of-type(3) {
  	top: 2px;
}

.navbar-toggle .icon-bar {
	  position: relative;
	  transition: all 500ms ease-in-out;
}

.navbar-toggle.active .icon-bar:nth-of-type(1) {
	  top: 6px;
	  transform: rotate(45deg);
}

.navbar-toggle.active .icon-bar:nth-of-type(2) {
	  background-color: transparent;
}

.navbar-toggle.active .icon-bar:nth-of-type(3) {
	  top: -6px;
	  transform: rotate(-45deg);
}
  <script type="text/javascript" src="//code.jquery.com/jquery-2.1.3.js"></script>

  <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

  <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<div class="navbar navbar-inverse navbar-fixed-top">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" href="#">Animated Burger, Bootstrap</a>
  </div>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
					      <li class="active"><a href="#">Home</a>
      </li>
				    </ul>
  </div>
</div>

【讨论】:

  • Np,我加了一点解释:)
  • 我已将库添加到您的答案中,因此 sn-p 直接在此处运行。 :)
猜你喜欢
  • 2011-05-18
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2018-09-29
  • 1970-01-01
  • 2013-03-25
  • 2013-11-13
相关资源
最近更新 更多