Вы можете задаться вопросом: «Что такое делегирование событий?» Короче говоря, делегирование событий — это способ уменьшить количество прослушивателей событий, которые мы используем в нашем коде. Это бесценно для поддержания производительности и ограничения избыточности в нашей логике. Давайте посмотрим на пример.

Часто при разработке кода, который содержит некоторый тип «карточки» или несколько дочерних элементов, у нас будет какое-то событие щелчка, которое происходит с каждой из этих «карточек». Например:

<div class="parent">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
</div>
const cards = document.querySelectorAll('.child');

cards.forEach((card) => card.addEventListener('click', cb);

Это приведет к созданию нескольких прослушивателей событий (по одному для каждого дочернего элемента) и не будет эффективно масштабироваться. Используя делегирование событий, мы можем избежать этого, добавив один прослушиватель событий к родительскому элементу и проверив, что мы нажимаем.

<div class="parent">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
</div>
const cardContainer = document.querySelector('.parent');

cardContainer.addEventListener('click', (e) => {
  const clicked = e.target;
  const childClasses = Array.from(clicked.classList); // Making the classlist an array
  if (childClasses.includes('child')) { // if what is clicked has class child then execute function
   someFunc();
  }
});

Это даст нам один прослушиватель событий, который будет иметь тот же результат, что и один прослушиватель для каждого дочернего элемента.

Это было короткое, но важное объяснение того, что такое делегирование событий!

Имейте это в виду в следующий раз, когда мы будем кодировать!