首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在点击时关闭其他子菜单

在点击时关闭其他子菜单,可以通过以下步骤实现:

  1. 首先,需要给每个子菜单添加一个点击事件的监听器。
  2. 在点击事件的处理函数中,首先获取到所有的子菜单元素。
  3. 遍历所有子菜单元素,判断当前子菜单是否为被点击的子菜单。
  4. 如果是被点击的子菜单,则保持该子菜单的状态为打开。
  5. 如果不是被点击的子菜单,则关闭该子菜单。
  6. 关闭子菜单的方式可以是隐藏子菜单元素,或者移除子菜单元素。
  7. 最后,确保在点击其他地方时,所有子菜单都被关闭。

以下是一个示例代码:

HTML:

代码语言:txt
复制
<div class="menu">
  <div class="submenu">子菜单1</div>
  <div class="submenu">子菜单2</div>
  <div class="submenu">子菜单3</div>
</div>

JavaScript:

代码语言:txt
复制
// 获取所有子菜单元素
var submenus = document.getElementsByClassName('submenu');

// 给每个子菜单添加点击事件监听器
for (var i = 0; i < submenus.length; i++) {
  submenus[i].addEventListener('click', function() {
    // 遍历所有子菜单元素
    for (var j = 0; j < submenus.length; j++) {
      // 判断当前子菜单是否为被点击的子菜单
      if (submenus[j] === this) {
        // 保持该子菜单的状态为打开
        submenus[j].classList.add('active');
      } else {
        // 关闭其他子菜单
        submenus[j].classList.remove('active');
      }
    }
  });
}

// 在点击其他地方时关闭所有子菜单
document.addEventListener('click', function(event) {
  var target = event.target;
  // 判断点击的目标是否为子菜单或子菜单的父元素
  if (!target.classList.contains('submenu') && !target.classList.contains('menu')) {
    // 关闭所有子菜单
    for (var k = 0; k < submenus.length; k++) {
      submenus[k].classList.remove('active');
    }
  }
});

CSS:

代码语言:txt
复制
.submenu {
  display: none;
}

.submenu.active {
  display: block;
}

在上述示例代码中,我们给每个子菜单元素添加了一个名为"submenu"的类,并且使用CSS将其默认隐藏。在点击事件的处理函数中,通过判断当前子菜单是否为被点击的子菜单,来决定是保持该子菜单的状态为打开,还是关闭其他子菜单。最后,我们通过在document上添加点击事件监听器,来实现在点击其他地方时关闭所有子菜单的功能。

请注意,上述示例代码仅为演示如何在点击时关闭其他子菜单,并不包含实际的菜单样式和具体的应用场景。在实际开发中,您需要根据具体的需求和设计来进行相应的修改和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android开发笔记(一百二十一)列表弹窗PopupMenu和ListPopupWindow

    PopupMenu是种显示位置不固定的弹出菜单,因为它显示在参照控件下方,所以展示位置随着参照控件的位置变化而变化。而其他几种菜单的显示位置都是固定的,比如说选项菜单Options固定显示在屏幕下方,上下文菜单ContextMenu固定显示在屏幕中央,溢出菜单OverflowMenu固定显示在屏幕右上角,有关其他菜单的详细说明参见《Android开发笔记(六十五)多样的菜单》。 下面是PopupMenu的常用方法说明: 构造函数 : 构造一个PopupMenu对象,并指定该对象的参照控件。 inflate : 根据指定的菜单资源文件,把具体的菜单项目填充到PopupMenu对象中。 setOnMenuItemClickListener : 设置菜单项的点击监听器。该监听器由接口OnMenuItemClickListener派生而来,要重写onMenuItemClick方法来实现菜单项点击事件。 show : 显示弹出菜单。 dismiss : 关闭弹出菜单。 setOnDismissListener : 设置弹出菜单的关闭监听器。 下面是PopupMenu的使用截图:

    03

    Windows程序设计学习笔记(五)——菜单资源和加速键的使用

    菜单可能是Windows提供的统一用户界面中最重要的一种方式,菜单通常在标题栏的下一行显示,这一栏叫做菜单栏,菜单栏中的每一项称之为菜单项,菜单栏中的每一个菜单项在激活时会显现一个下拉菜单(也可以说是它的子菜单),下拉菜单中也可以有多个菜单项,每个菜单项又可以有子菜单,每个菜单项都有一个唯一的数字标示,称为菜单项的ID,但是有子菜单的菜单项没有ID。用户点击某项后,会产生一个WM_COMMAND消息发送到其父窗口,该消息中包含了这个菜单项的ID。菜单的创建可以通过可视化的方法创建,也可以通过编写资源脚本的方式创建菜单资源,在这里重点说明如何通过脚本编写的方式创建菜单

    02

    在Win7的IIS上搭建FTP服务及用户授权

    FTP服务      FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载)。在网络上有很多服务器提供FTP服务,用来存放大量的文件供他人下载。FTP服务的主要作用是让远程用户可以连接上来,查看服务器上有哪些文件,然后下载,当然用户也可以将本地文件上传到服务器,共享给其他人以便下载。FTP服务提供上传下载服务的同时,管理员也可以设置不同用户对不同文件夹的访问权限(读、写)。 在Win7的IIS上搭建FTP服务      初学Web开发的人,一般的情况下都认为IIS只能提供Web服务。其实IIS不仅可以提供Web服务,还可以提供其他服务,如网络新闻服务(NNTP)、简单邮件传输服务(SMTP),当然还有文件传输服务(FTP)。只是在IIS上,用得最多的是Web服务。默认安装的情况下,IIS也只会安装Web服务,FTP服务只在特定选择的情况下才会被安装到IIS环境中。下面,我们来看看在Win7的IIS上安装FTP服务的步骤: 1、打开“控制面板”的“程序和功能”,进入到“程序和功能”的界面,选择左侧的“打开或关闭Windows功能”,打开“Windows”功能对话框;

    06

    在Win7的IIS上搭建FTP服务及用户授权

    FTP服务      FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载)。在网络上有很多服务器提供FTP服务,用来存放大量的文件供他人下载。FTP服务的主要作用是让远程用户可以连接上来,查看服务器上有哪些文件,然后下载,当然用户也可以将本地文件上传到服务器,共享给其他人以便下载。FTP服务提供上传下载服务的同时,管理员也可以设置不同用户对不同文件夹的访问权限(读、写)。 在Win7的IIS上搭建FTP服务      初学Web开发的人,一般的情况下都认为IIS只能提供Web服务。其实IIS不仅可以提供Web服务,还可以提供其他服务,如网络新闻服务(NNTP)、简单邮件传输服务(SMTP),当然还有文件传输服务(FTP)。只是在IIS上,用得最多的是Web服务。默认安装的情况下,IIS也只会安装Web服务,FTP服务只在特定选择的情况下才会被安装到IIS环境中。下面,我们来看看在Win7的IIS上安装FTP服务的步骤: 1、打开“控制面板”的“程序和功能”,进入到“程序和功能”的界面,选择左侧的“打开或关闭Windows功能”,打开“Windows”功能对话框;

    01

    最新iOS设计规范五|3大界面要素:控件(Controls)

    iOS是运行于iPhone、iPad和iPod touch设备上、最常用的移动操作系统之一。作为互联网应用的开发者、产品经理、体验设计师,都应当理解并熟悉平台的设计规范。这有利于提高我们的工作效率,保证用户良好的体验。 本文是iOS设计规范系列第5篇,介绍3大界面要素(栏、视图、控件)中的控件(Controls)。首先让我们回顾一下iOS的3大界面要素。 3大界面要素 (Interface Essentials) 大多数iOS应用都是由UI Kit中的组件构建的。UI Kit是一种定义通用界面元素的编程框架,这个框架不仅让APP在视觉外观上保持一致,同时也为个性化设计留有很大空间。UI Kit提供的界面组件有三类:栏(Bars),视图(Views),控件(Controls)。

    03

    butterfly-heo主题反编译日记

    洪哥的博客可以说算是基于butterfly主题里魔改的最舒服的一款了,从最基础的圆角到卡片UI排布,乃至侧栏底栏的UI重构,处处都能体现出产品设计师的专业素养。本文旨在对洪哥博客的一些组件进行反向解析。 此处之所以是反向解析,是因为我想的是告诉各位洪哥的改动思路,而不是单纯叫你们去抄洪哥的css,本文的最终目的是让各位既知其然亦知其所以然,能够在掌握之后开发属于自己的个性化主题。 因此,并不是说学完本文,你的主题就能和洪哥的博客一样了。而是学完以后,你就会自己制作了。 行文顺序会一个组件一个组件的解析,更新时间可能会很长。还请各位有点耐心。

    01
    领券