Выбирает первый элемент из списка

Есть ul При клике на li добавляю класс, но всегда добавляет первому в списке

Отслеживаю клик

 document.querySelector('.' + this.html_class.menu_toggle).addEventListener('click', (function () {
            this.toggleMenu();
        }).bind(this));

Добавляю класс

let element = e.target.closest('.' + this.html_class.menu_item_show_parent);
 element.classList.toggle(this.html_class.active);

Ответы (1 шт):

Автор решения: De.Minov

А вы читали о .querySelector()? Он возвращает только первый элемент по селектору, в то время как .querySelectorAll() вернёт коллекцию элементов по заданному селектору.

В этом случае потребуется пройтись циклом по всем найденным элементам и каждому повесить .addEventListener().

document.querySelectorAll('.'+this.html_class.menu_toggle).forEach(function(element) {
  element.addEventListener('click', function(event) {
    event.target.toggleMenu();
  });
});

Либо использовать делегирование событий.

→ Ссылка