当前位置: 首页 > 知识库问答 >
问题:

如何在单击外部菜单时删除切换类

越鸿才
2023-03-14

下拉框使用CSS和超文本标记语言/JS设计,使用从JS添加的名为“is-open”的类。一旦出现在指定的超文本标记语言div中,它将激活CSS来显示子菜单。

然而,有一个小问题,即一旦单击下拉框将不会消失,除非单击相同的菜单项。(当单击菜单内容div之外时,类不会取消切换)

作为一项基本功能,一旦用户不仅单击菜单,而且单击页面上的任何位置,该菜单都需要消失。

我目前的javascript如下所示:

$(document).ready(function() {
   $(".has-submenu").click(function(e) {
      e.stopPropagation();
      if($(this).hasClass("is-open")) {
         $(this).removeClass("is-open");
      } else {
         $(".has-submenu").removeClass("is-open");
         $(this).addClass("is-open");
      }
   });
});

下面是该代码的codepen示例:https://codepen.io/anon/pen/EwMjrz

共有1个答案

赫连鸿振
2023-03-14

您可以在文档中添加一个事件监听器来关闭菜单

$(document).ready(function() {
  $(".has-submenu").click(function(e) {
    e.stopPropagation();
    if($(this).hasClass("is-open")) {
      $(this).removeClass("is-open");
    } else {
      $(".has-submenu").removeClass("is-open");
      $(this).addClass("is-open");
    }
  });
  $(document).on('click', function (e) {
    e.stopPropagation();
    $('.has-submenu').removeClass("is-open");
  });
});

这应该能奏效!

 类似资料:
  • 在React.js中,我在中有页面链接菜单和3个切换按钮。 单击时,所有切换按钮都有层。 我想做的是。。。 当单击切换按钮时,必须删除其他切换按钮和图层。类别 当单击页面链接菜单(menu1、menu2、menu3)时,所有切换按钮和层都必须被删除 我需要什么来更改代码? 这就是我目前为止所尝试的。 请帮忙。 演示:https://codesandbox.io/s/49io4 header.js

  • 我的菜单显示向下,但然后水平。 我希望每一个导航项目都显示下来,在彼此的上面。 现场测试站点URL:ministerios-elim.herokuapp.com CodePen:(无法使菜单在单击CodePen时出现)。 https://codepen.io/ogonzales/pen/abnqxlg 更新2: 更新3:

  • 问题内容: 当用户单击下拉菜单之外的任何地方时,我想关闭我的登录菜单下拉菜单,我想使用Angular2和Angular2“方法”来完成此操作… 我已经实现了一个解决方案,但是我对此确实没有信心。我认为必须有一种最简单的方法来达到相同的结果,因此,如果您有任何想法…让我们讨论一下:)! 这是我的实现: 下拉组件: 这是我的下拉菜单的组成部分: 每次将此组件设置为可见时,(例如:当用户单击按钮以显示它

  • 这是点击事件。 这是xml 结果将显示在片段中,但抽屉菜单仍然显示。我该怎么做才能关闭它?任何人都给我建议,如何解决这个问题,任何帮助非常感谢。谢谢你。

  • 我有这样的标记 和像这样的JS 所以在这里,我希望当我点击课程时,只有课程内容会显示出来,就像这样,当我点击配置文件和库时,只有配置文件和库会显示出来。在这里,它的工作很好,但我想知道如何添加一个类活动时,一个项目被点击在锚标记。假设我点击了lessons,那么一个活动类应该被添加到lessons锚标记中,当我点击了profile,那么活动类应该被从lessons锚标记中移除,它应该在profil

  • 问题内容: 如何在vue.js中切换类? 我有以下几点: 当我单击时,我想按以下方式申请课程: 这需要切换,即每次单击它都需要添加/删除类。 问题答案: 您可以让活动类依赖于布尔数据值: