【问题标题】:Changing menu title only happens after first time更改菜单标题仅在第一次之后发生
【发布时间】:2016-04-23 12:35:03
【问题描述】:

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

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

我的方法是好方法吗?这是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>

【问题讨论】:

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


    【解决方案1】:

    在我的分析中插件可能存在一些问题。对于第一次单击,它不会添加或删除名为 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.

    【讨论】:

      【解决方案2】:

      试试这个:DEMO

      我在按钮内添加文本。

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

      【讨论】:

        【解决方案3】:

        我的建议是:

        这些行的主要变化:

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

        和:

        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar">
            <span class="so_menu_name">Watch the Trailer</span>
        </button>
        

        $(function () {
          var menu_title = $(".so_menu_name").html();
        
          $("button.navbar-toggler").on("click", function (e) {
            e.preventDefault();
            var collapsed = $(this).hasClass("collapsed");
            if (collapsed) {
              $(".so_menu_name").text(menu_title);
            }
            else {
              $(".so_menu_name").text("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);
        }
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js"></script>
        
        
        <div class="container">
            <nav class="navbar navbar-dark bg-inverse">
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar">
                    <span class="so_menu_name">Watch the Trailer</span>
                </button>
                <div class="navbar-toggleable-xs collapse in" 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>

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2023-03-09
          • 1970-01-01
          • 1970-01-01
          • 2014-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-14
          相关资源
          最近更新 更多