Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: event delegation, event bubbling, DOM events, performance optimization, event listener

Как можно использовать всплытие событий для оптимизации обработчиков на большом количестве элементов?

Вопрос проверяет понимание делегирования событий в JavaScript как метода оптимизации производительности при работе с множеством однотипных элементов.

Короткий ответ

Делегирование событий использует всплытие событий, чтобы назначить один обработчик на родительский элемент вместо множества обработчиков на каждый дочерний элемент. Когда событие происходит на дочернем элементе, оно всплывает до родителя, где обработчик может определить целевой элемент через event.target. Это уменьшает потребление памяти и упрощает добавление/удаление элементов без перепривязки обработчиков.

Длинный ответ

Что такое делегирование событий?

Делегирование событий — это техника, основанная на механизме всплытия (bubbling) событий в DOM. Вместо того чтобы назначать обработчик каждому элементу отдельно, вы назначаете один обработчик на общего родителя. Когда событие происходит на любом из дочерних элементов, оно всплывает вверх по дереву DOM и достигает родительского обработчика.

Как это работает?

В обработчике родителя вы используете свойство event.target, чтобы определить, на каком именно элементе произошло событие. Затем вы можете выполнить соответствующее действие. Это особенно полезно для динамических списков, таблиц или меню, где элементы могут добавляться или удаляться после загрузки страницы.

Пример кода

// Вместо 1000 обработчиков на каждый li:
// document.querySelectorAll('li').forEach(li => li.addEventListener('click', ...))

// Используем делегирование на ul:
document.querySelector('ul').addEventListener('click', function(event) {
  const target = event.target.closest('li'); // находим li, на котором кликнули
  if (!target) return; // если клик не по li, игнорируем
  
  console.log('Кликнут элемент:', target.textContent);
  target.classList.toggle('active');
});

// Теперь новые li, добавленные через JavaScript, автоматически обрабатываются

Преимущества делегирования

  • Экономия памяти: один обработчик вместо сотен или тысяч.
  • Упрощение кода: не нужно вручную привязывать обработчики к новым элементам.
  • Динамические списки: идеально для чатов, лент новостей, таблиц с подгрузкой.

Когда стоит применять?

Делегирование событий рекомендуется использовать, когда у вас есть большое количество однотипных элементов (более 10-20) или когда элементы динамически добавляются/удаляются. Однако будьте осторожны: не все события всплывают (например, focus не всплывает), и для некоторых случаев может потребоваться дополнительная проверка event.target.

Вывод: делегирование событий — это мощный паттерн для оптимизации производительности и упрощения кода при работе с динамическими интерфейсами, особенно в списках, таблицах и меню.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#event delegation

#event bubbling

#DOM events

#performance optimization

#event listener

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию