В чём разница между target и currentTarget
1️⃣ Как кратко ответить
target указывает на элемент, на котором произошло событие, тогда как currentTarget указывает на элемент, к которому прикреплен обработчик события.
2️⃣ Подробное объяснение темы
В JavaScript, когда происходит событие, например, клик мыши, оно может инициироваться на одном элементе, но обработчик события может быть привязан к другому элементу. Чтобы понять, как это работает, важно различать target и currentTarget.
target:
target — это свойство объекта события, которое указывает на элемент, на котором изначально произошло событие. Это может быть элемент, на который пользователь кликнул, навел мышь или с которым каким-либо образом взаимодействовал.
currentTarget:
currentTarget — это свойство объекта события, которое указывает на элемент, к которому привязан обработчик события. Это элемент, который в данный момент обрабатывает событие.
Пример:
Рассмотрим HTML-структуру:
<div id="parent">
<button id="child">Click me</button>
</div>
И JavaScript-код:
document.getElementById('parent').addEventListener('click', function(event) {
console.log('target:', event.target);
console.log('currentTarget:', event.currentTarget);
});
Объяснение кода:
-
HTML-структура:
- У нас есть
divсid="parent", внутри которого находитсяbuttonсid="child".
- У нас есть
-
Добавление обработчика события:
- Мы добавляем обработчик события
clickк элементу сid="parent".
- Мы добавляем обработчик события
-
Внутри обработчика события:
event.targetуказывает на элемент, на котором произошло событие. Если пользователь кликнет на кнопку,event.targetбудет указывать на элементbuttonсid="child".event.currentTargetуказывает на элемент, к которому привязан обработчик события. В данном случае это всегда будетdivсid="parent", так как обработчик привязан именно к этому элементу.
Зачем это нужно:
targetполезен, когда нужно знать, на каком элементе произошло событие, особенно если обработчик привязан к родительскому элементу и событие инициируется на дочернем элементе.currentTargetполезен, чтобы знать, к какому элементу привязан обработчик, что особенно важно при использовании делегирования событий, когда один обработчик используется для обработки событий на множестве дочерних элементов.
Практическое применение:
- Делегирование событий: позволяет привязывать один обработчик к родительскому элементу и обрабатывать события на множестве дочерних элементов, что улучшает производительность и упрощает код.
- Различение элементов: помогает точно определить, какой элемент инициировал событие, и какой элемент обрабатывает его, что важно для сложных интерфейсов с вложенными элементами.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться