首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过单击外部关闭导航栏?

如何通过单击外部关闭导航栏?
EN

Stack Overflow用户
提问于 2019-02-10 19:21:34
回答 2查看 524关注 0票数 0

我有一个Drupal8.6.8站点,带有Bootstrap 3.3.7主题

当我点击外部时,我希望我的导航菜单关闭。我试着用密码:

代码语言:javascript
复制
(function ($) {
  'use strict';

  $(document).click(function (event) {
    if (!$(event.target).closest('#navbar-collapse-first').length) {
      $('.navbar-collapse-first').collapse('hide');
    }
  });

}(jQuery));

https://css-tricks.com/dangers-stopping-event-propagation/

它不工作,如果我单击导航菜单外,它不关闭。仅当我单击“外部”时,才希望菜单关闭。即使是菜单链接也不应该关闭菜单,除非页面被重新加载。

以下是导航菜单按钮的代码:

代码语言:javascript
复制
<div id="block-togglenavigationfirst" class="contextual-region">

<button type="button" class="navbar-toggle-first collapsed" data-toggle="collapse" data-target="#navbar-collapse-first" aria-expanded="false">

  <div class="icon-navbar-first">
    <span class="fa-layers fa-3x">
      <i class="far fa-circle"></i>
      <span class="navbar-icon-open">
        <i class="fas fa-th-list" data-fa-transform="shrink-8"></i>
      </span>
      <span class="navbar-icon-close">
        <i class="fas fa-times" data-fa-transform="shrink-8"></i>
      </span>
    </span>
  </div>

  <div class="icon-navbar-first-alert icon-navbar-first-alert-disable">
    <span class="fa-layers fa-3x">
      <i class="fas fa-circle"></i>
      <span class="navbar-icon-open">
        <i class="fas fa-th-list fa-inverse" data-fa-transform="shrink-8"></i>
      </span>
      <span class="navbar-icon-close">
        <i class="fas fa-times fa-inverse" data-fa-transform="shrink-8"></i>
      </span>
    </span>
  </div>

</button>

</div>

这是导航菜单:

代码语言:javascript
复制
<div id="navbar-collapse-first" class="navbar-collapse-first width navbar-collapse-first-fixed-top collapse in" aria-expanded="true" style="">
  <div class="region region-navigation-collapsible-first">
    <nav role="navigation" aria-labelledby="block-useraccountmenu-menu" id="block-useraccountmenu" class="contextual-region">
      <h2 class="sr-only" id="block-useraccountmenu-menu">User account menu</h2>          
      <ul class="menu menu--account nav navbar-nav navbar-right">
        <li class="first last">
          <a href="/fr/unmasquerade" title="Retourner sur votre compte utilisateur.">Cesser de se faire passer pour quelqu'un d'autre</a>
        </li>
      </ul>
    </nav>
  </div>
</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-10 19:54:12

您应该检查一下单击发生在哪里。如果单击在导航栏之外,然后切换它,否则不要这样做。

您的javascript代码将变成:

代码语言:javascript
复制
(function ($) {
  'use strict';

   $(document).click(function (event) {
       if (!($(event.target).is('#navbar-collapse-first *'))
           $('.navbar-collapse-first').collapse('hide');
   });

}(jQuery));
票数 0
EN

Stack Overflow用户

发布于 2019-02-10 19:35:06

尝试从w3schools中使用此解决方案

close

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54620095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档