【问题标题】:Collapse the Bootstrap burger menu when you click on a scrollspy link单击滚动间谍链接时折叠 Bootstrap 汉堡菜单
【发布时间】:2021-07-26 21:04:44
【问题描述】:

当您单击滚动间谍链接时,如何折叠 Bootstrap 汉堡的菜单?

在智能手机上查看我的网站时,引导导航会简化为汉堡菜单。如果您单击指向我的 index.html 中特定位置(例如#aboutMe)而不是外部页面的链接,则导航将保持展开状态。我希望它之后再次崩溃。

您可以查看代码:https://github.com/senkvalentin/personal_page 或访问网站:https://senkvalentin.com/

这是我的 html 的一部分:

.h-100vh{
  height:100vh;
}
<script src="https://code.jquery.com/jquery-latest.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<div data-spy="scroll" data-target=".navbar" data-offset="50">
  <div class="container">
    <div class="row">
      <nav class="navbar fixed-top navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
          <a class="navbar-brand" href="/"><img src="./img/logo.png" alt="">
          </a>
          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-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 me-auto mb-2 mb-lg-0">
              <li class="nav-item">
                <a class="nav-link" aria-current="page" href="#home">Home</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#aboutMe">About</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" aria-current="page" href="#projectsList">Projects</a>
              </li>
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                      Admin
                    </a>
                <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                  <li><a class="dropdown-item" href="!#" target="_blank">Server - Info</a></li>
                  <li><a class="dropdown-item" href="#" target="_blank">Mail - Server</a></li>
                  <li><a class="dropdown-item" href="#" target="_blank">Mail - Server</a></li>
                  <li><a class="dropdown-item" href="!#" target="_blank">Cloud - Server</a></li>
                </ul>
              </li>
            </ul>
          </div>
        </div>
      </nav>
    </div>
    <div id="home" class="h-100vh bg-warning">Home</div> 
    <div id="aboutMe" class="h-100vh bg-success">About Me</div>
    <div id="projectsList" class="h-100vh bg-primary">Project</div>

我已经看过了:How to hide collapsible Bootstrap navbar on click
还有:Bootstrap panel-collapse collapses when you click on a link inside it is clicked

但没有任何效果。

我正在使用最新版本的 jQuery 和 Bootstrap 版本 5.0.1:

<script src="https://code.jquery.com/jquery-latest.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>

【问题讨论】:

    标签: javascript html jquery css bootstrap-5


    【解决方案1】:

    在 Jquery 中,点击链接时只需在 navbar-toggler 按钮上触发 click

    $('.nav-link').click(function(){
      $('.navbar-toggler').click();
    });
    

    $('.nav-link').click(function(){
      $('.navbar-toggler').click();
    });
    .h-100vh{
      height:100vh;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" />
    <div data-spy="scroll" data-target=".navbar" data-offset="50">
      <div class="container">
        <div class="row">
          <nav class="navbar fixed-top navbar navbar-expand-lg navbar-light bg-light">
            <div class="container-fluid">
              <a class="navbar-brand" href="/"><img src="./img/logo.png" alt="">
              </a>
              <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-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 me-auto mb-2 mb-lg-0">
                  <li class="nav-item">
                    <a class="nav-link" aria-current="page" href="#home">Home</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="#aboutMe">About</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" aria-current="page" href="#projectsList">Projects</a>
                  </li>
                  <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                          Admin
                        </a>
                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                      <li><a class="dropdown-item" href="!#" target="_blank">Server - Info</a></li>
                      <li><a class="dropdown-item" href="#" target="_blank">Mail - Server</a></li>
                      <li><a class="dropdown-item" href="#" target="_blank">Mail - Server</a></li>
                      <li><a class="dropdown-item" href="!#" target="_blank">Cloud - Server</a></li>
                    </ul>
                  </li>
                </ul>
              </div>
            </div>
          </nav>
        </div>
        <div id="home" class="h-100vh bg-warning">Home</div> 
        <div id="aboutMe" class="h-100vh bg-success">About Me</div>
        <div id="projectsList" class="h-100vh bg-primary">Project</div>

    【讨论】:

      【解决方案2】:

      您首先需要选择所有.nav-link,不包括.dropdown-toggle
      然后,分配一个事件监听器以在点击时切换.navbar-collapse

      $(document).ready(() => {
        let $navlinks = $('.nav-link').not('.dropdown-toggle');
        // console.log($navlinks)
        $navlinks.click((e) => {
          $(e.target).closest('.navbar').find('.navbar-collapse').collapse('toggle')
        })
      })
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.css">
      
      <div data-spy="scroll" data-target=".navbar" data-offset="50">
        <div class="container">
          <div class="row">
            <nav class="navbar fixed-top navbar navbar-expand-lg navbar-light bg-light">
              <div class="container-fluid">
                <a class="navbar-brand" href="/"><img src="./img/logo.png" alt="logo">
                </a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-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 me-auto mb-2 mb-lg-0">
                    <li class="nav-item">
                      <a class="nav-link" aria-current="page" href="/">Home</a>
                    </li>
                    <li class="nav-item">
                      <a class="nav-link" href="#aboutMe">About</a>
                    </li>
                    <li class="nav-item">
                      <a class="nav-link" aria-current="page" href="#projectsList">Projects</a>
                    </li>
                    <li class="nav-item dropdown">
                      <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                        Admin
                      </a>
                      <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <li><a class="dropdown-item" href="!#" target="_blank">Server - Info</a></li>
                        <li><a class="dropdown-item" href="#" target="_blank">Mail - Server</a></li>
                        <li><a class="dropdown-item" href="#" target="_blank">Mail - Server</a></li>
                        <li><a class="dropdown-item" href="!#" target="_blank">Cloud - Server</a></li>
                      </ul>
                    </li>
                  </ul>
                </div>
              </div>
            </nav>
          </div>
      
          <script src="https://code.jquery.com/jquery-latest.js"></script>
          <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-06
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        • 2017-02-11
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多