@WebNerd
It's time to hunt

Делегирование vs цикл, что лучше в целом и какие плюсы и минус?

Например код через цикл:
for (let nodes of contents.querySelectorAll('a')) {

  nodes.addEventListener('click', (event) => {
  let quest = confirm(`Leave for ${nodes.href}`)

  if (quest) return

  event.preventDefault()
})
}


А вот код с делегированием:
contents.onclick = function(event) {

      function handleLink(href) {
        let isLeaving = confirm(`Leave for ${href}?`);
        if (!isLeaving) return false;
      }

      let target = event.target.closest('a');

      if (target && contents.contains(target)) {
        return handleLink(target.getAttribute('href'));
      }
    };


Представим, что 1000 элементов. Автор учебника уверяет, что делегирование в таком случаи незаменимо. В целом, согласен. Но ведь можно использовать просто цикл? Или, как я понимаю, 1000 обработчиков грузят систему куда серьезнее, чем 1 на всего родителя. Нужно мнение спецов)
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
События так и так «катаются» по всему документу:
ныряют от window через document, body и все родительские элементы, до кликнутого элемента
и всплывают всю дорогу обратно до window. Почему бы не ловить их один раз, выше дна?

Ещё один плюс: динамическое добавление новых дочерних элементов, на которых клики тоже понадобится обрабатывать. С делегированием не придётся дополнительно вешать обработчик: клик по новичкам будет обработан.
Ответ написан
Ваш ответ на вопрос

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

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