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

如何在另一个打开时关闭手风琴?

在前端开发中,手风琴(Accordion)是一种常见的UI组件,用于展示可折叠的内容区域。当一个手风琴打开时,其他手风琴应该关闭,以确保只有一个内容区域是可见的。

要实现在另一个打开时关闭手风琴的功能,可以通过以下步骤进行操作:

  1. 首先,为每个手风琴定义一个唯一的标识符或类名,以便能够准确地选择和操作它们。
  2. 在事件处理程序中,当一个手风琴被点击时,需要执行以下操作:
    • 关闭当前打开的手风琴:通过移除或添加类名来切换当前手风琴的状态,使其折叠起来。
    • 打开被点击的手风琴:通过移除或添加类名来切换被点击手风琴的状态,使其展开。

下面是一个示例代码,演示如何在另一个打开时关闭手风琴:

HTML结构:

代码语言:txt
复制
<div class="accordion" id="accordion1">
  <div class="accordion-item">
    <h2 class="accordion-header" id="heading1">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1" aria-expanded="true" aria-controls="collapse1">
        手风琴1
      </button>
    </h2>
    <div id="collapse1" class="accordion-collapse collapse show" aria-labelledby="heading1" data-bs-parent="#accordion1">
      <div class="accordion-body">
        手风琴1的内容
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header" id="heading2">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse2" aria-expanded="false" aria-controls="collapse2">
        手风琴2
      </button>
    </h2>
    <div id="collapse2" class="accordion-collapse collapse" aria-labelledby="heading2" data-bs-parent="#accordion1">
      <div class="accordion-body">
        手风琴2的内容
      </div>
    </div>
  </div>
</div>

JavaScript代码:

代码语言:txt
复制
// 获取所有手风琴元素
const accordions = document.querySelectorAll('.accordion-item');

// 为每个手风琴添加点击事件处理程序
accordions.forEach(accordion => {
  const button = accordion.querySelector('.accordion-button');
  
  button.addEventListener('click', () => {
    // 判断当前手风琴是否已经展开
    const isExpanded = accordion.classList.contains('show');
    
    // 关闭当前打开的手风琴
    accordions.forEach(item => {
      item.classList.remove('show');
    });
    
    // 如果当前手风琴未展开,则打开被点击的手风琴
    if (!isExpanded) {
      accordion.classList.add('show');
    }
  });
});

在上述示例代码中,我们使用了Bootstrap框架的手风琴组件(Accordion Component),并结合JavaScript代码实现了在另一个打开时关闭手风琴的功能。通过点击手风琴的按钮,可以切换手风琴的展开和折叠状态,并且只有一个手风琴可以同时展开。

请注意,这只是一个示例代码,实际项目中可能需要根据具体情况进行适当的修改和调整。另外,如果你使用的是其他前端框架或库,可能会有不同的实现方式。

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

相关·内容

何在 Web 关闭页面发送 Ajax 请求

比如下面这种写法就会让用户导致在刷新或者关闭页面时候,有个弹窗提醒用户是否关闭。...从介绍上可以看出,这个方法就是用来在用户离开发请求的。非常适合这种场景。...如何在 Web 关闭页面发送 Ajax 请求 (2)使用FormData对象,但是这时content-type会被设置成"multipart/form-data"。...如何在 Web 关闭页面发送 Ajax 请求 (3)数据也可以使用URLSearchParams 对象,content-type会被设置成"text/plain;charset=UTF-8" 。...如何在 Web 关闭页面发送 Ajax 请求 通过尝试,可以发现使用blob发送比较方便,内容的设置也比较灵活,如果发送的消息抓包后发现后台没有识别出来,可以尝试修改内容的string或者header

3.3K30
  • Word VBA技术:创建、打开关闭文档自动运行宏

    标签:Word VBA 有多种方法可以使我们在创建、打开关闭Word文档自动运行宏。...这样,每当创建基于该模板的文档,将运行Document_New()过程;每当打开基于该模板的文档,会运行Document_Open()过程;每当关闭基于该模板的文档,会运行Document_Close...注意,这些过程不是全局的,只有在创建、打开关闭基于模板的文档才会触发这些过程。...如果存储在除Normal.dotm以外的任何模板中,这些事件的行为方式与Document事件相同,当创建、打开关闭附加到模板的文档,它们将被触发。...然而,如果存储在Normal.dotm中,则它们将全局运行,换句话说,当创建、打开关闭任何文档,它们都将被触发。

    2.7K30

    【译】W3C WAI-ARIA最佳实践 -- 控件

    Escape: 关闭对话框。 NOTE 当对话框被打开,根据内容的性质和大小放置焦点。 在任何情况下,焦点都应该移动到对话框中的一个元素上。...当一个对话框关闭,焦点返回到唤起该对话框的元素上,除了: 唤起元素不复存在,此时,焦点被设置在逻辑工作流程中的另一个元素上。...Down Arrow: 不打开关闭节点,将焦点移到下一个可聚焦的节点。 Up Arrow: 不打开关闭节点,将焦点移到上一个可聚焦的节点。...Home: 不打开关闭节点,将焦点移到树结构中的第一个可聚焦的节点。 End: 不打开关闭节点,将焦点移到树结构的最后一个可聚焦的节点。 Enter: 激活一个节点,即执行其默认操作。...每个作为父节点拥有 treeitem 的元素 aria-expanded 设置为 false,当节点处于关闭状态,并设置为 true ,该节点是在打开状态。

    4.5K30

    使用element-ui中table expand展开行控制显示隐藏(手风琴效果)

    同样的,toggleRowExpansion方法也支持手风琴效果,点击展开自己的同时关闭原先除自己之外的已打开的展开项,实现手风琴,修改methods→toogleExpand方法: toogleExpand...我们把每行的expand关闭一次,再把对应的行打开,这样就实现了手风琴效果了。...新的问题,当我们点击打开手风琴,每次都至少有一个是打开状态的,这样很明显是bug了,我们做一下让已打开行的expand合闭。...bug原因:当我们点击已打开的expand想关闭,相当于走了一遍$table.toggleRowExpansion(row, false)后,又走了一遍$table.toggleRowExpansion...遍历外层数组,找到除了当前点击的展开项之外的行,关闭除自己之外的已展开项,然后展开或者关闭当前点击的行。

    9.5K31

    python测试开发django-187.Bootstrap模态框(modal)如何在关闭触发事件

    前言 Bootstrap 模态框 (modal) 在关闭,如何触发一些事件?比如重置表单,或者重置表单的校验。 Bootstrap 模态框 (modal) 提供了4个显示和隐藏模态框的事件。...$(‘#identifier’).on(‘show.bs.modal’, function () {// 执行一些动作…}) shown.bs.modal 当模态框对用户可见触发(将等待 CSS 过渡效果完成...$(‘#identifier’).on(‘shown.bs.modal’, function () {// 执行一些动作…}) hide.bs.modal 当调用 hide 实例方法触发。...$(‘#identifier’).on(‘hide.bs.modal’, function () { // 执行一些动作…}) hidden.bs.modal 当模态框完全对用户隐藏触发。....'); }) }); 关闭模态框销毁校验 模态框在关闭的时候可以执行重置校验,关于重置校验方法,可以参考前面这篇https://www.cnblogs.com/yoyoketang

    1.4K30

    腾讯面试官:如何从0到1实现一个高性能Collapse折叠组件,直到现在我还实现不出来

    ,该如何处理,这个我到时候解决了,提前渲染隐藏就行,但是重排的问题直到现在我都没有解决,发出来问问大家,如果是你们,你们会如何思考 jcode 我们先从最基本的实现开始,然后逐步添加更多的功能,手风琴模式...当一个新的面板被展开,之前展开的面板将被关闭。 activeKey:当前展开面板的key。如果我们处于手风琴模式,这将是一个字符串或null。如果我们不在手风琴模式,这将是一个字符串数组。...destroyOnClose:如果设置为true,我们将在面板关闭销毁它的内容。 disabled:如果设置为true,我们将禁用面板,使其不能被打开关闭。...forceRender:如果设置为true,我们将在面板关闭仍然渲染它的DOM结构。 key:panel的唯一标识符。 onClick:它在面板的标题栏被点击被触发。...如果这个属性被设置为true,我们会在组件隐藏仍然渲染DOM结构,如果面板渲染的数据量比较大,这个属性特别有用,不会造成打开的时候会卡顿一下 import React, { useState }

    46920

    Axure原型设计:动态面板实现手风琴菜单

    手风琴菜单效果很好,只是写的不够详细,在一番摸索后,貌似到达了同样的效果。所以分享出来,做一个简单的示例说明。...步骤如下:一、拖拉元件(1)先拖一个动态面板,命名:手风琴菜单(2)给“手风琴菜单”添加一个状态,命名:一级菜单(3)在“一级菜单”里,添加3个矩形框作为一级菜单项,3个箭头作为模拟菜单打开关闭效果,3...个动态面板作为二级菜单内容,分别命名清楚(命名只是为了我们交互可以清晰看到元件名称,方便检查逻辑),效果如下:(4)给“二级菜单1”设置不可见和自适应内容,并添加一个状态,添加3个矩形框作为二级菜单项...(2)添加事件“单击”,单击有2个情形:展开和折叠(3)添加情形“展开”,条件是动态面板“二级菜单1”不可见(4)添加动作“移动”,将动态面板“二级菜单1”移动到达矩形框“一级菜单1”的底部(坐标可以用编辑器来完成...8)添加动作“显示/隐藏”,将动态面板“二级菜单1”隐藏起来,并且下方的元件往回拉(9)添加动作“旋转”,将图标“箭头1”旋转180°逻辑解读就是当鼠标点击菜单1将菜单1的子项展示出来,二次点击隐藏起来

    15510

    高颜值在线绘图平台ImageGP系列教程 - 参数介绍

    第五部分是 更多参数 Cluster parameters, Data preprocess, Layout等。...每个手风琴里面有更多参数可以设置,如果该手风琴里面有必选参数,通常是打开的;如果没有必选参数,默认是收起的。...如果必选或必填参数为空,则不能提交;或提交也会弹出信息,不允许提交。 参数后面都有一个符号 (i),鼠标放上去后会悬浮显示这个参数的解释。这是了解这个参数的关键信息。...热图聚类,如果没有选要做聚类、则聚类方法、距离计算方法不可选,选了也没用。看到一个参数不可用,如果不知道是做啥的或用不到,就可以大胆的忽略。如果想用,却发现用不了,就要找下其相关参数有没有设置。...选择颜色集合和自定义取色两个只有一个处于可选状态,清空一个选项,另一个选项即可用。 1.4 数据格式效验 数据格式效验主要包括几个内容: 数据矩阵的列分割符是否为单个TAB键。

    1.2K40

    前端-10款web动画插件

    2.基于Layui的可自定义添加删除数据的表格处理插件 如何在网页上编辑表格数据,这通过自己编写JS和CSS实现都是比较麻烦的,jQuery有很多插件可以完成这种功能,比如这款jQuery简易版的Excel...5.jQuery左侧边栏多级菜单 适合后台管理页面使用 这是一款基于jQuery的侧边栏多级下拉菜单插件,这个菜单的特点是可以固定在左侧边栏,当页面滚动整个菜单可以保持一直可见,方便操作。...菜单项会沿着曲线移动到当前视窗,同时显示对应的小图标,更重要的,菜单项的切换是循环的,因此使用起来也非常方便。...10.CSS3深色背景的垂直手风琴菜单 手风琴菜单我们已经分享过很多了,特别是垂直手风琴菜单更为常见,比如这款jQuery手风琴样式的多级下拉菜单和这款CSS3带小图标的手风琴下拉菜单都非常不错。...这次要分享的也是一款基于CSS3的深色背景的垂直手风琴菜单,实现原理与之前的比较类似,但是菜单展示形式略有不同,这个手风琴菜单当展开子菜单会有水平飞入的动画效果。 ?

    5.9K50

    记一个“奇葩”需求的实现

    2、需求: 导航菜单(el-menu组件)竖向展示的 鼠标移入一级菜单展示下面的子菜单,移出则收起来(手风琴模式,正常状态下只保持一个菜单处于展开状态,手动鼠标悬浮展开的不算) 选中某个子菜单高亮对应的一级菜单...,并且当鼠标移出高亮的这个菜单模块不折叠,但是可以点击一级菜单进行折叠(注意:跟第一条有区别) 3、问题: element-ui的导航组件子菜单打开的触发方式可以通过 menu-trigger...close方法关闭。...// 登录系统的时候,记录展开的菜单信息, // 在 mounted 里面获取 openedMenus ,并记录信息 mounted() { // 获取当前展开的菜单 - array // 手风琴模式...,再打开新的 this.

    70910

    Chrome 120 有哪些值得关注的更新?

    当用户发送一个关闭请求,比如按下 Esc 键或者安卓的返回键,CloseWatcher 会触发一个 onclose 事件。开发者可以通过监听这个事件,来处理用户的关闭请求。...,例如按Esc键或者安卓的返回键'); }; // 当你不再需要CloseWatcher,你可以销毁它 watcher.destroy(); // 如果你想在用户试图关闭某个对话框弹出一个确认对话框...新增 name 属性 元素新增了一个 name属性,可以为我们轻松的创建手风琴效果(accordion pattern)。...它支持将多个 元素通过相同的 name 属性值串联在一起形成一个组,使得在一个组内最多只能有一个元素处于打开的状态。...换句话说,在一个组内,一旦一个 元素被打开,其他所有 元素都会被关闭

    45510

    小程序-实现折叠面板-手风琴效果

    背景 无论是在小程序还是 h5 网页,折叠菜单,手风琴是一个非常常见的效果,如今也有很多现成的 UI 组件库已经实现了这一效果的,但有时候在写原生小程序时,单单就是一个折叠菜单效果,却要引入整个 UI...* 页面的初始数据 */ data: { selected: [false, false, false, false, false], // // 这里表示列表项是否展开,默认初始此数组的元素全为...this.data.selected[`${index}`], active: index, }); // 如果点击的不是当前展开的项,则关闭当前展开的项 // 这里就实现了点击一项...) { this.setData({ [`selected[${active}]`]: false, }); } }, }); 如上代码就可以实现手风琴的效果...结语 实现这个手风琴,主要还是在怎么控制子选项的一个状态selected,通过列表的索引,然后进行控制selected的状态,实现子项列表内容的显示和隐藏 ---- 如果您有问题,欢迎小伙伴们下方留言

    3K10

    前端开发需要知道的一些 CSS 属性选择器!

    如果你想选择 title 包含 dna的元素, “my beautiful dna” 或者 “mutating dna is fun!” ,可以使用波浪号(~)。...这对于你希望人们访问但不希望它们立即打开的 PDF 和 DOC 非常有用。它还使得连续下载大量文件的工作流程更加容易。下载属性的缺点是没有默认的视觉效果将其与更传统的链接区分开来。...accept="pdf,doc,docx"> [accept]:after { content: "Acceptable file types: " attr(accept); } html 手风琴菜单...details和summary标签是一种只用HTML做扩展/手风琴菜单的方法,details 包括了summary标签和手风琴打开要展示的内容。...没有 controls 属性的 audio 我不经常使用audio标签,但是当我使用它,我经常忘记包含controls属性。 结果:没有显示任何内容。

    1.8K20

    使用这些 CSS 属性选择器来提高前端开发效率!

    如果你想选择 title 包含 dna的元素, “my beautiful dna” 或者 “mutating dna is fun!” ,可以使用波浪号(~)。...这对于你希望人们访问但不希望它们立即打开的 PDF 和 DOC 非常有用。它还使得连续下载大量文件的工作流程更加容易。下载属性的缺点是没有默认的视觉效果将其与更传统的链接区分开来。...accept="pdf,doc,docx"> [accept]:after { content: "Acceptable file types: " attr(accept); } html 手风琴菜单...details和summary标签是一种只用HTML做扩展/手风琴菜单的方法,details 包括了summary标签和手风琴打开要展示的内容。...没有 controls 属性的 audio 我不经常使用audio标签,但是当我使用它,我经常忘记包含controls属性。 结果:没有显示任何内容。

    2.2K50
    领券