【问题标题】:How can I hide the Bootstrap drop down menu after clicking a menu link?单击菜单链接后如何隐藏 Bootstrap 下拉菜单?
【发布时间】:2021-12-29 02:23:58
【问题描述】:

在我的单页网站中,我有一个带有汉堡菜单的置顶导航栏。 如果您单击汉堡,将出现一个下拉菜单,其中包含所有链接。

我想在单击菜单链接后隐藏下拉菜单(因此它只会显示带有汉堡的导航栏)。

另外,大屏幕上没有 dorpdown 菜单。

这是代码:

    <nav class="navbar navbar-expand-lg navbar-dark bg-primary sticky-top">
      <div class="container-xxl py-2">
        <a class="navbar-brand" href="#">CreatiVE Lab</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse justify-content-end" id="navbarNav">
          <ul class="navbar-nav">
            <li class="nav-item px-lg-3">
              <a class="nav-link" href="#menuLink1">Cos'è CreatiVE Lab?</a>
            </li>
            <li class="nav-item px-lg-3">
              <a class="nav-link" href="#menuLink2">Servizi</a>
            </li>
            <li class="nav-item px-lg-3">
              <a class="nav-link" href="#menuLink3">Dicono di noi</a>
            </li>
            <li class="nav-item px-lg-3 d-none d-lg-block">
              <a class="nav-link" href="#menuLink4">FAQ</a>
            </li>
            <li class="nav-item px-lg-3">
              <a class="nav-link" href="#menuLink5">Contatti</a>
            </li>
            <li class="nav-item ps-lg-3">
              <a class="btn btn-primary bigButton" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasStart" aria-controls="offcanvasStart">Inizia il tuo progetto</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>

我想知道是否有使用 Bootstrap 类的解决方案,或者我是否必须使用 Javascript。

【问题讨论】:

  • 嗨,艾丽!你可以为此发布一个codepen吗?
  • @afloresescarcega 这是链接 --> codepen.io/dario-ludax/pen/yLzprJP
  • @afloresescarcega 颜色和形状在这个链接中完全搞砸了,但你只需要检查导航栏。非常感谢
  • 谢谢!抱歉,这只是一个粗略的解决方案,但我会在导航项上添加一个单击事件,该事件将从元素“navbarNav”stackoverflow.com/questions/19655189/… 中删除类“show”

标签: menu dropdown navbar bootstrap-5


【解决方案1】:

通过代码将 jQuery 连接到您的文件

<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" crossorigin="anonymous"></script>

并在此点击处理程序下方插入:

jQuery($ => {
  const $navbar = $('#navbarNav');

  $navbar.find('.nav-link').on('click', () => {
    setTimeout(() => {
      $navbar.collapse('hide');
    }, 500);
  });
});

这里:

  • jQuery($ =&gt; { ... }) — 等待文档完全加载
  • const $navbar = $('#navbarNav') — 将您的 #navbarNav 元素存储到变量中
  • $navbar.find('.nav-link') — 在 #navbarNav 上搜索链接
  • .on('click', () =&gt; { ... }) — 为找到的链接添加点击监听器
  • setTimeout(() =&gt; { ... }, 500) — 等待滚动动画结束
  • $navbar.collapse('hide') — 崩溃 #navbarNav

How it works 在 codepen 上。

【讨论】:

  • 谢谢!它部分有效,因为添加了 setTimeout 属性,滚动在到达右侧部分之前停止。实际上,例如,如果将 setTimeout 属性设置为 1000,则滚动效果很好,但结果却很奇怪。有什么想法吗?
  • 在 700 毫秒内它工作得非常好。非常感谢!
猜你喜欢
  • 2015-10-11
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
相关资源
最近更新 更多