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
相关产品推荐
相关产品推荐

