Вопрос проверяет понимание делегирования событий в JavaScript как метода оптимизации производительности при работе с множеством однотипных элементов.
Делегирование событий — это техника, основанная на механизме всплытия (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
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию