jquery - 更改菜单标题仅在第一次后发生

标签 jquery css twitter-bootstrap twitter-bootstrap-4

我有一个 Bootstrap 菜单。如果它是折叠的,我希望它有页面的名称,如果它是打开的,我希望它命名菜单。

现在我将其命名为“观看预告片”(假设在该页面上的位置)。 单击按钮时,更改标题有效,但仅在第一次后有效。这是为什么?

我的方法好吗?这是一个 jsfiddle for convenience .

var menu_title = $(".so_menu_name").html();
    
$(".navbar button").on("click", function () {
  var collapsed = $(".navbar button").hasClass("collapsed");
  if (!collapsed) {
    $(".so_menu_name").html(menu_title);
  }
  else {
    $(".so_menu_name").html("Menu");
  }
});
.nav.navbar-nav .nav-item {
      float: none;
}

.nav.navbar-nav .nav-item+.nav-item {
      margin-left: 0;
}
.nav.navbar-nav .nav-link {
      padding: .25rem 0;
}
.nav.os_menu {
      border-top: 2px solid rgba(255, 255, 255, .5);
      border-bottom: 2px solid rgba(255, 255, 255, .5);
}
<div class="container">

  <nav class="navbar navbar-dark bg-inverse">
    <span class="so_menu_name">Watch the Trailer</span>
    <button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#collapsingNavbar">+</button>

    <div class="collapse navbar-toggleable-xs" id="collapsingNavbar">

      <ul class="nav navbar-nav os_menu">
        <li class="nav-item active">
          <a class="nav-link" href="#">Watch the Trailer<span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Screening & Events</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Synopsis</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">The Protagonist</a>
        </li>
      </ul>

    </div>
  </nav>

</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

根据我的分析,插件可能存在一些问题。对于第一次点击,它不会添加或删除名为 collapse 的类。

如果你使用它的属性 aria-expanded 你可能会解决这个问题。

var menu_title = $(".so_menu_name").html();

$(".navbar button").on("click", function () {
//  var collapsed = $(".navbar button").hasClass("collapsed");
if ($(this).attr('aria-expanded') == "true") {
  $(".so_menu_name").html(menu_title);
}
else {
  $(".so_menu_name").html("Menu");
}

});

Try fiddle .

关于jquery - 更改菜单标题仅在第一次后发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36810899/

相关文章:

jquery - 天际线后面的光线到天空,html5,css3(可能是动画)

css - Font Awesome : Fa Bars - Border Radius

css - 仅统一文本字段 CSS/Bootstrap

css - 推特 Bootstrap 中不需要的边距

php - 如何调用基于滚动条点击的函数?

javascript - 在 Typeahead.js 的远程属性(参数)中使用选择框值

jquery - 选择选项悬停

javascript - 使用 Jquery 自动向下滚动?

html - @font-face - 奇怪的 CSS 字体请求 URL

javascript - Bootstrap Alert 不褪色和向上滑动