【问题标题】:Navbar fixed doesn't collapse when click on items (small screen device)导航栏固定在单击项目时不会折叠(小屏幕设备)
【发布时间】:2018-01-29 20:38:54
【问题描述】:

我使用的是 bootstrap 4,我有 bootstrap 3 的解决方案,但 bootsrap 4 似乎不太一样。我卡住了,这是完成项目所需的最后一件事。 这是我的导航栏(带有引导程序 4):

 <nav class="navbar fixed-top navbar-expand-lg navbar-light pink" id="navbar-fixed">
        <a class="navbar-brand" href="#"><img src="images/perfect-party-rental-logo.jpg" class="logo"></a>
        <!-- Collapse button -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupported" aria-controls="navbarSupported"
    aria-expanded="false" aria-label="Toggle navigation"></button>
<!-- Collapsible content -->
<div class="collapse navbar-collapse" id="navbarSupported">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item">
              <a class="nav-link active" href="#home"><i class="fa fa-home" aria-hidden="true"></i> Home<span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#inflatables"><i class="fa fa-smile-o" aria-hidden="true"></i> Inflatables</a>
            </li>... <!--ETC-->

这是来自 bootstrap 3 的 JS 代码片段:

            $(".navbar-collapse ul li a").click(function(event) {
      $(".navbar-collapse").collapse('hide');
    });

控制台一直说“折叠”不是功能:S

有什么线索吗?

【问题讨论】:

  • 您的代码完全符合预期; .collapse 上面的代码默认不会抛出错误。请更新您的问题,在minimal, complete, and verifiable example 中包含所有您的相关代码,包括对Bootstrap 和jQuery 的引用。
  • 让我换个说法。我想关闭我的响应式菜单,让我点击导航栏内的一个项目,以及当我点击导航栏外部时。我想自动关闭响应式菜单并能够再次重新打开它

标签: javascript jquery twitter-bootstrap bootstrap-4


【解决方案1】:

这是一个在 Bootstrap 4 中工作的导航栏示例(如您所见,它不需要任何额外的 JavaScript sn-ps)。

点击“运行代码sn-p”按钮,展开全屏测试:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

编辑(从我的评论中添加):

我检查了你的 codepen,当它在我这边工作时,我在控制台中看到了这个:“未捕获的错误:引导下拉菜单需要 Popper.js”,这意味着你没有加载 popper。在 Bootstrap 4 中弹出或下拉的所有内容都需要 Node.js。使用我在代码 sn-p 底部包含的文件,它应该可以工作。此外,在您的代码笔中,您正在加载引导程序 4.0.0-beta.2。该版本现在过时了。从我的 sn-p 复制并粘贴所有内容。这就是我为您发布它的原因。

【讨论】:

  • 我不知道为什么,但是在我的家庭开发环境中不起作用,我用完全相同的代码创建了这个 codepen,它可以工作!但我不...我稍后会弄清楚这是带有我的代码sn-p codepen.io/manAbl/pen/Jpjxeg的codepen
  • 刚刚检查了您的 codepen,当它在我身边工作时,我在控制台中看到了这个:“未捕获的错误:引导下拉菜单需要 Popper.js”,这意味着您不是t 加载在 Bootstrap 4 中弹出或下拉的所有内容所需的 popper.js。使用我在代码 sn-p 底部包含的文件,它应该可以工作。此外,在您的代码笔中,您正在加载引导程序 4.0.0-beta.2。该版本现在已过时。从我的 sn-p 复制并粘贴所有内容。这就是我为您发布它的原因。
  • 嘿!我找到了问题的答案,结果我加载了两次 jquery 库,这导致了错误。除此之外,您的回答让我觉得也许我以错误的方式上传了一些文件,因为我使用了一个入门引导模板。真的很有帮助:)
  • 很高兴听到这个消息。是的,在这种情况下,我们需要仔细检查实际加载的是什么。过去我也遇到过我加载了错误的东西并且想知道为什么它不起作用。学过的知识! :-)
猜你喜欢
  • 1970-01-01
  • 2020-12-01
  • 2018-04-29
  • 2020-01-23
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 2018-08-12
  • 2019-12-16
相关资源
最近更新 更多