Вебсправочник
Основы веб-разработки

target и currentTarget: куда нажали и где работает обработчик

У события есть источник взаимодействия и объект, на котором выполняется текущий обработчик. Различие target и currentTarget помогает объяснить поведение кнопок с вложенными иконками и делегирование событий.

Назначение

У события есть источник взаимодействия и объект, на котором выполняется текущий обработчик. Различие target и currentTarget помогает объяснить поведение кнопок с вложенными иконками и делегирование событий.

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

В собственном файле создайте button id save, внутри которого есть span с текстом. Подключите код после кнопки. Щелчок по вложенному span может дать его в target, а currentTarget в этом обработчике будет кнопкой.

Пример

const button = document.querySelector("#save");
button.addEventListener("click", event => {
  console.log("Источник:", event.target.tagName);
  console.log("Обработчик:", event.currentTarget.id);
  const owner = event.currentTarget;
  queueMicrotask(() => console.log("Сохранённая ссылка:", owner.id));
});

Что должно получиться

Для разных точек нажатия источник может отличаться, но владелец обработчика остаётся save. Ссылка owner сохраняется явно, если она понадобится после завершения обработки события.

Граница применения и частая ошибка

CurrentTarget вне выполнения обработчика становится null. Не обращайтесь к нему позднее через сохранённый event в расчёте на прежнее значение. В Shadow DOM действует переназначение цели, поэтому простой пример не описывает все границы компонентов.

Самостоятельная проверка

Нажмите на текст и на свободную область кнопки. Затем активируйте её клавиатурой и сравните сообщения. Перенесите обработчик на родителя и сформулируйте, какое поле теперь указывает на родителя.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.