繁体   English   中英

使 vanilla JS 手风琴自动关闭上一节

[英]Make vanilla JS accordion auto close previous section

我发现这个很棒的手风琴代码非常紧凑,但我在这里想念的是 function 在打开另一个部分时自动关闭前一部分。 这可能很容易,但遗憾的是,我是一个完整的 JS 菜鸟。 原始代码源。

const items = document.querySelectorAll(".accordion a");

function toggleAccordion(){
  this.classList.toggle('active');
  this.nextElementSibling.classList.toggle('active');
}

items.forEach(item => item.addEventListener('click', toggleAccordion));

你试过什么了? 如果您没有,请尝试以下逻辑。

在你给一个元素一个active的 class 之前 - 循环遍历元素的 rest 并将其从所有元素中删除:)

const items = document.querySelectorAll(".accordion a");
const remove = () => {
  items.forEach(el => {
    el.classList.remove('active');
     el.nextElementSibling.classList.remove('active');
  })
}
function toggleAccordion(){
  remove()
  this.classList.toggle('active');
  this.nextElementSibling.classList.toggle('active');
}

items.forEach(item => item.addEventListener('click', toggleAccordion));

您可以存储活动的...

    const items = document.querySelectorAll(".accordion a");
    let active = null;
    function toggleAccordion(){
      if(active){
        active.classList.toggle('active');
      } 
      this.classList.toggle('active');
      this.nextElementSibling.classList.toggle('active');
      active = this;
    }
    items.forEach(item => item.addEventListener('click', toggleAccordion));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM