You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

forEach循环中点击下一个div时如何关闭之前已打开的手风琴项

解决方法

直接修改你的JS逻辑即可,每次点击手风琴项时先移除所有非当前点击项的open类,再对当前项做切换操作,修改后代码如下:

(() => {
    const accordion = document.querySelector('[bke-data="accordion"]');
    if (!accordion) {
        return;
    }
    const items = accordion.querySelectorAll('.accordion__item');
    items.forEach((item) => {
        item.addEventListener('click', () => {
            // 关闭所有非当前点击的项
            items.forEach(el => {
                if (el !== item) el.classList.remove('open')
            })
            // 切换当前项的打开状态
            item.classList.toggle('open')
        });
    });
})();

逻辑说明

  • 点击任意手风琴项时,先遍历所有项,移除除了当前点击项之外所有项的open类,保证同一时间最多只有一个项处于打开状态
  • 最后切换当前点击项的open类:如果当前项之前是关闭状态就打开,如果是打开状态就关闭,保留了点击已打开项可以关闭的原有交互

内容的提问来源于stack exchange,提问作者Galanthus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:15:02