我的事件监听器会激活下面的所有元素。我该如何解决?

问题描述 投票:-1回答:1
    initAccordion(){
  const thisProduct = this;
  const clickTrigger = document.querySelectorAll(select.menuProduct.clickable);

    for (let click of clickTrigger) {
      click.addEventListener('click', function(){
        event.preventDefault();
        console.log('click');
        thisProduct.element.classList.toggle(classNames.menuProduct.wrapperActive);

        const allActiveProducts = document.querySelectorAll(classNames.menuProduct.wrapperActive);

        for(let active of allActiveProducts){
          if (active !== thisProduct) {
            active.classList.remove(classNames.menuProduct.wrapperActive);
          }
        }
      });
    }
}

当在一个生成的元素上触发事件时,下面的所有元素都将变为类活动状态。我该如何预防?

javascript html css handlebars.js
1个回答
0
投票
event.stopImmediatePropagation();
event.stopPropagation();

event.preventDefault()之后添加此名称,它将仅允许一个选择器(最先出现或在您单击的位置)触发,而不是全部。

© www.soinside.com 2019 - 2024. All rights reserved.