Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Пояснення Розповсюдження та Делегування Подій | Обробка Подій та Взаємодія з Користувачем у JavaScript
Просунуте Володіння JavaScript

bookПояснення Розповсюдження та Делегування Подій

Пропагування подій

Пропагування подій описує, як подія переміщується через DOM після її виклику, і має три окремі фази: Фаза захоплення, Фаза цілі та Фаза спливання.

Фаза захоплення (Capture)

Подія починається з кореня DOM-дерева (window) і рухається вниз до цільового елемента. Обробники подій на цій фазі перехоплюють подію під час її руху вниз.

Фаза цілі

Подія досягає цільового елемента (елемент, який ініціював подію). Саме тут виконуються обробники подій, прикріплені безпосередньо до цільового елемента.

Фаза спливання (Bubble)

Після досягнення цільового елемента подія починає рухатися вгору по DOM-дереву до кореня (window), спливаючи через батьківські елементи. Це найбільш поширена фаза, яка дозволяє батьківським елементам реагувати на події, ініційовані дочірніми елементами.

index.html

index.html

index.css

index.css

index.js

index.js

copy

Подія поширюється через DOM, коли натискається button. Спочатку подія спрацьовує на самому button (фаза цілі), потім піднімається до внутрішнього div і, нарешті, до зовнішнього div (фаза спливання).

Делегування подій

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

  1. Продуктивність: Зменшення кількості обробників подій підвищує продуктивність, особливо у випадках, коли елементи створюються динамічно (наприклад, список, що розширюється при додаванні нових елементів);
  2. Зручність підтримки: Делегування подій спрощує код, особливо при роботі з великими структурами DOM або динамічним контентом.
index.html

index.html

index.css

index.css

index.js

index.js

copy

Замість додавання обробників кліку до кожного елемента button окремо, один обробник додається до батьківського елемента div. Подія піднімається від елементів button до div, де й обробляється.

Невдалий підхід

Вдалий підхід

Практичний приклад: Обробка динамічного списку

Делегування подій ідеально підходить для керування взаємодіями у списках або таблицях, які можуть змінюватися з часом (наприклад, додавання завдань до списку справ або товарів до кошика). Коли елементи додаються або видаляються, батьківський контейнер (такий як ul або table) обробляє всі взаємодії, що дозволяє уникнути необхідності додавати або видаляти обробники для кожного дочірнього елемента.

index.html

index.html

index.css

index.css

index.js

index.js

copy

1. Що таке поширення подій?

2. На якому етапі подія піднімається вгору деревом DOM після досягнення цільового елемента?

3. Чому делегування подій є корисним, особливо при роботі з динамічним контентом?

question mark

Що таке поширення подій?

Select the correct answer

question mark

На якому етапі подія піднімається вгору деревом DOM після досягнення цільового елемента?

Select the correct answer

question mark

Чому делегування подій є корисним, особливо при роботі з динамічним контентом?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain the difference between capturing and bubbling phases in more detail?

How does event delegation work with dynamically added elements?

Can you provide a code example of event delegation in JavaScript?

Awesome!

Completion rate improved to 2.22

bookПояснення Розповсюдження та Делегування Подій

Свайпніть щоб показати меню

Пропагування подій

Пропагування подій описує, як подія переміщується через DOM після її виклику, і має три окремі фази: Фаза захоплення, Фаза цілі та Фаза спливання.

Фаза захоплення (Capture)

Подія починається з кореня DOM-дерева (window) і рухається вниз до цільового елемента. Обробники подій на цій фазі перехоплюють подію під час її руху вниз.

Фаза цілі

Подія досягає цільового елемента (елемент, який ініціював подію). Саме тут виконуються обробники подій, прикріплені безпосередньо до цільового елемента.

Фаза спливання (Bubble)

Після досягнення цільового елемента подія починає рухатися вгору по DOM-дереву до кореня (window), спливаючи через батьківські елементи. Це найбільш поширена фаза, яка дозволяє батьківським елементам реагувати на події, ініційовані дочірніми елементами.

index.html

index.html

index.css

index.css

index.js

index.js

copy

Подія поширюється через DOM, коли натискається button. Спочатку подія спрацьовує на самому button (фаза цілі), потім піднімається до внутрішнього div і, нарешті, до зовнішнього div (фаза спливання).

Делегування подій

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

  1. Продуктивність: Зменшення кількості обробників подій підвищує продуктивність, особливо у випадках, коли елементи створюються динамічно (наприклад, список, що розширюється при додаванні нових елементів);
  2. Зручність підтримки: Делегування подій спрощує код, особливо при роботі з великими структурами DOM або динамічним контентом.
index.html

index.html

index.css

index.css

index.js

index.js

copy

Замість додавання обробників кліку до кожного елемента button окремо, один обробник додається до батьківського елемента div. Подія піднімається від елементів button до div, де й обробляється.

Невдалий підхід

Вдалий підхід

Практичний приклад: Обробка динамічного списку

Делегування подій ідеально підходить для керування взаємодіями у списках або таблицях, які можуть змінюватися з часом (наприклад, додавання завдань до списку справ або товарів до кошика). Коли елементи додаються або видаляються, батьківський контейнер (такий як ul або table) обробляє всі взаємодії, що дозволяє уникнути необхідності додавати або видаляти обробники для кожного дочірнього елемента.

index.html

index.html

index.css

index.css

index.js

index.js

copy

1. Що таке поширення подій?

2. На якому етапі подія піднімається вгору деревом DOM після досягнення цільового елемента?

3. Чому делегування подій є корисним, особливо при роботі з динамічним контентом?

question mark

Що таке поширення подій?

Select the correct answer

question mark

На якому етапі подія піднімається вгору деревом DOM після досягнення цільового елемента?

Select the correct answer

question mark

Чому делегування подій є корисним, особливо при роботі з динамічним контентом?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4
some-alt