@StrStr

Как навесить обработчик на коллекцию элементов 2?

У меня несколько блоков с одинаковым классом и внутренней кнопкой. Необходимо повесить обработчик на несколько элементов.

const headerArrow = document.querySelector(".work-header-arrow");
      const workDescr = document.querySelector(".descr");

      headerArrow.addEventListener("click", () => {
        headerArrow.classList.toggle("active");
        workDescr.classList.toggle("active");
      });


Понимаю, что querySelectorAll отработает только на первом.
Читал тут решение в ES6, но так и не вкурил.

как правильно?
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
@VadimFilimonov
// Ищем родителей
const works = Array.from(document.querySelectorAll('.works-name'));

// Для каждого из родителей
works.forEach((item) => {
    // Вешаем обработчик
    item.addEventListener('click', (event) => {
        // Если пользователь кликнул именно на кнопку
        if (event.target.classList.contains('.work-header-arrow')) {
            // Меняем класс у самого родителя
            item.classList.toggle("active");
        }
    });
});


Когда у родителя будет нужный класс - с помощью css можно отнаследоваться и сделать что-угодно внутри
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы