← Назад ко всем вопросам

В чём разница между 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);
});

Объяснение кода:

  1. HTML-структура:

    • У нас есть div с id="parent", внутри которого находится button с id="child".
  2. Добавление обработчика события:

    • Мы добавляем обработчик события click к элементу с id="parent".
  3. Внутри обработчика события:

    • event.target указывает на элемент, на котором произошло событие. Если пользователь кликнет на кнопку, event.target будет указывать на элемент button с id="child".
    • event.currentTarget указывает на элемент, к которому привязан обработчик события. В данном случае это всегда будет div с id="parent", так как обработчик привязан именно к этому элементу.

Зачем это нужно:

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

Практическое применение:

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

Тема: Браузер: DOM, события и модель
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки