@Sector567

Как добраться до узла ДОМ через this?

вот код: https://jsfiddle.net/k5sxh0nz/

Нужно чтобы по клику на определенный пункт меню, менялся фон у его субменю.

При помощи this я могу получить пункт меню по которому кликнули, но как получить .submenu внутри этого this, чтобы сменить ему фон?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Делегирование, назначаем обработчик клика один раз для всех:

document.querySelector('.menu').addEventListener('click', ({ target: t }) => {
  if (t.tagName === 'A') {
    const submenu = [...t.parentNode.children].find(n => n.classList.contains('sub-menu'));
    if (submenu) {
      submenu.classList.toggle('red');
    }
  }
});

Назначаем обработчик клика каждому элементу индивидуально:

for (const n of document.querySelectorAll('.menu a')) {
  n.addEventListener('click', onClick);
}

function onClick() {
  this.nextElementSibling?.classList.toggle('red');
}

// или

document.querySelectorAll('.sub-menu').forEach(function(n) {
  n.previousElementSibling.addEventListener('click', this);
}, e => e.target.nextElementSibling.classList.toggle('red'));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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