Задать вопрос
@anmkh

Как отменить действие preventDefault у дочерних элементов?

Есть меню
// Меню по клику в шапке
document.addEventListener('DOMContentLoaded', () => {

  const submenuItem = document.querySelectorAll(".header .menu-item-has-children");
  const menuBody = document.querySelector(".header .sub-menu");

  submenuItem.forEach((item) => { 
      item.addEventListener('click', handlerItem);
      
      // слушаем клик вне меню
      document.addEventListener("click", function (e) {
        const target = e.target;
        const its_menu = target == menuBody || menuBody.contains(target);
        const its_btnMenu = target == menuBody;
        const menu_is_active = item.classList.contains("--show");
    
        if (!its_menu && !its_btnMenu && menu_is_active) {
          item.classList.toggle("--show");
        }
      });
      // слушаем скролл
      document.addEventListener("scroll", function () {
        //убираем класс если произошел скролл
        item.classList.remove("--show");
      });
    });

    function handlerItem(e) {
      e.preventDefault();
      e.stopPropagation();
      this.classList.toggle("--show");
  };
  
});


На дочерние ссылки срабатывает preventDefault. Как отменить его для дочерних элементов, не сломая код?
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы