javascript - 当菜单打开时,如何将类添加到页面主体?

标签 javascript css twitter-bootstrap drop-down-menu

我在网站的左下角创建了一个“更多”按钮来显示菜单。

当你点击按钮时,+变成x

https://www.s1biose.com/groupe/recettes-et-astuces

<div class="dropup">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdown-menu-action" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    <div class="fa-4x">
      <span class="fa-layers fa-fw">
        <i class="fas fa-circle"></i>
        <i class="fa-inverse fas fa-plus" data-fa-transform="shrink-6"></i>
      </span>
    </div>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdown-menu-action">
    <li><a href="/profil" data-drupal-link-system-path="profil"><i class="fas fa-id-card fa-lg"></i> Créer mon profil</a></li>
  </ul>
</div>

如何在菜单打开时向页面主体添加类 .overlay-is-navbar-collapse 并在菜单关闭时删除该类?

以下代码无效。如果我在外部单击,菜单会关闭,但类仍保留在 body 上。

  $('#dropdown-menu-action').on('click', () => {
       $('body').toggleClass('overlay-is-navbar-collapse');
  });

我已经尝试了下面的代码,但是它不起作用:

  $('#dropdown-menu-action').on('shown.bs.dropdown', function () {
       $('body').addClass('overlay-is-navbar-collapse');
  });

  $('#dropdown-menu-action').on('hidden.bs.dropdown', function () {
       $('body').removeClass('overlay-is-navbar-collapse');
  });

最佳答案

使用 .one 将监听器附加到主体 ,当主体的类被添加时:

$('#dropdown-menu-action').on('click', () => {
  $('body').addClass('overlay-is-navbar-collapse');
  $('body').one('click', () => {
    $('body').removeClass('overlay-is-navbar-collapse');
  });
});

关于javascript - 当菜单打开时,如何将类添加到页面主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643700/

相关文章:

JavaScript 从文件中读取

css - 将 LI 动画化为 div

javascript - Angular-UI Bootstrap : pass value from Trigger's button to Modal's button

javascript - 如何在 C# 中按组名添加单选按钮的选定值?

javascript - 使用 FLIP 技术构建页面布局

css - 使用 Material-UI 将 Logo 与中心对齐

html - 重置 Bootstrap CSS 属性的最简单方法?

html - Bootstrap - 将按钮对齐到卡片底部

css - CSS background-color 前的星号是什么意思?

javascript - MarkLogic:MarkLogic 数据中心 Content.sjs 中的协调错误