Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS властивість Event.currentTarget

Загальний опис

currentTarget — це властивість об'єкта Event, яка вказує на елемент, до якого прив'язаний слухач подій. Це корисно, коли вам потрібно точно визначити елемент, який безпосередньо викликав обробник події, незалежно від того, де саме в DOM ця подія була ініційована. Наприклад, якщо ви встановили обробник подій на елементі div, а подія була спричинена натисканням на вкладений елемент, властивість currentTarget все одно поверне елемент div.

Використання currentTarget зручно для визначення елемента, до якого прив’язаний обробник, на відміну від target, який вказує на елемент, що безпосередньо ініціював подію. Це особливо корисно, коли ви маєте справу з вкладеними елементами або використовуєте делегування подій. Наприклад, якщо встановити обробник подій на контейнер, ви можете визначити, що саме цей контейнер був «метою» для обробки події, навіть якщо подію спровокував дочірній елемент.

Приклад:

document.querySelector('.container').addEventListener('click', function(event) {
  console.log(event.currentTarget); // повертає '.container', навіть якщо натиснули на вкладений елемент
});

Як видно з прикладу, currentTarget вказує на .container, незалежно від того, на якому саме вкладеному елементі стався клік. Це допомагає уникнути зайвих перевірок та робить обробку подій у складних структурах DOM ефективнішою.

Якщо у вас є список елементів, таких як кнопки в одному контейнері, ви можете прив'язати один обробник подій до контейнера і обробляти всі кліки з допомогою currentTarget. Це також спрощує обробку, оскільки зменшує кількість обробників подій і підвищує продуктивність додатка.

document.querySelector('.button-list').addEventListener('click', function(event) {
  if (event.target.tagName === 'BUTTON') {
    console.log('Button clicked within list');
    console.log(event.currentTarget); // '.button-list'
  }
});
Порада:

При використанні currentTarget та target разом можна визначити, чи був натиснутий дочірній елемент, перевіривши, чи відрізняються ці значення. Це спрощує аналіз подій і їх розподіл.

Порада:

currentTarget не змінюється під час події, на відміну від target, який може змінюватися, якщо ви маєте справу з делегуванням подій. Таким чином, ви можете використовувати currentTarget для стабільної ідентифікації обробника.

Порада:

У разі динамічного додавання елементів у DOM, currentTarget все одно посилається на обробник, встановлений на контейнері. Таким чином, можна працювати з динамічними елементами без потреби додавати обробники подій для кожного з них.

Синтаксис

event.currentTarget

Значення

Return

Переглядачі

Переглядач

1

1

1

7

12

Переглядач

4.4

18

4

1

Переглядач

14.5.0

1.0

Приклади


Код показує, як властивість event.currentTarget дозволяє обробнику визначити елемент, на якому він був встановлений, незалежно від того, де відбулася подія. Коли користувач натискає на одну з кнопок, ця кнопка змінює свій стиль, щоб вказати, що вона є активною.

Цей приклад показує, як за допомогою currentTarget можна обробляти події від дочірніх елементів меню, але при цьому знати, що подія була ініційована саме в контейнері .menu.

document.querySelector('.menu').addEventListener('click', function(event) {
  if (event.target.tagName === 'LI') {
    console.log('Menu item clicked:', event.target.textContent);
  }
  console.log('Current Target:', event.currentTarget);
});

Тут currentTarget визначає контейнер .gallery, а target дає змогу обробляти натискання на конкретне зображення в галереї. Цей підхід дозволяє динамічно змінювати елементи всередині контейнера, а також застосовувати зміни лише до вкладених елементів без прямої роботи з контейнером.

document.querySelector('.gallery').addEventListener('click', function(event) {
  if (event.target.tagName === 'IMG') {
    event.target.style.border = '2px solid red';
  }
  console.log('Gallery container clicked:', event.currentTarget);
});