Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Propagação e Delegação de Eventos Explicadas | Manipulação de Eventos e Interações do Usuário em JavaScript
Domínio Avançado de JavaScript

bookPropagação e Delegação de Eventos Explicadas

Propagação de Eventos

Propagação de eventos descreve como um evento se move pelo DOM após ser disparado, e possui três fases distintas: Captura, Alvo e Bolha.

Fase de Captura (Capture)

O evento começa na raiz da árvore DOM (window) e desce em direção ao elemento alvo. Os ouvintes de eventos nesta fase capturam o evento enquanto ele se propaga para baixo.

Fase Alvo

O evento alcança o elemento alvo (o elemento que disparou o evento). É neste momento que os ouvintes de eventos anexados ao próprio elemento alvo são executados.

Fase de Bolha (Bubble)

Após alcançar o elemento alvo, o evento começa a subir novamente pela árvore DOM até a raiz (window), passando pelos elementos pai. Esta é a fase mais utilizada, permitindo que elementos pai reajam a eventos disparados por elementos filhos.

index.html

index.html

index.css

index.css

index.js

index.js

copy

O evento se propaga pelo DOM quando o button é clicado. Primeiro, o evento é disparado no button (fase de destino), depois sobe para a div interna e, por fim, para a div externa (fase de propagação).

Delegação de Eventos

Delegação de Eventos é uma técnica que aproveita a propagação de eventos para lidar com eventos de elementos filhos utilizando um único ouvinte de eventos em um elemento pai. Em vez de anexar ouvintes individuais a cada filho, um elemento pai escuta eventos que sobem de seus filhos. Essa abordagem possui duas principais vantagens:

  1. Desempenho: Reduzir o número de ouvintes de eventos melhora o desempenho, especialmente em situações onde elementos são criados dinamicamente (por exemplo, uma lista que cresce conforme novos itens são adicionados);
  2. Manutenibilidade: A delegação de eventos simplifica o código, especialmente ao trabalhar com grandes estruturas DOM ou conteúdo dinâmico.
index.html

index.html

index.css

index.css

index.js

index.js

copy

Em vez de adicionar ouvintes de clique a cada elemento button individualmente, um único ouvinte é adicionado ao elemento pai div. O evento propaga dos elementos button para o div, onde é tratado.

Abordagem Ruim

Abordagem Boa

Exemplo Prático: Manipulando Lista Dinâmica

A delegação de eventos é ideal para gerenciar interações em listas ou tabelas que podem crescer ao longo do tempo (por exemplo, adicionando tarefas a uma lista de afazeres ou produtos a um carrinho de compras). À medida que itens são adicionados ou removidos, o contêiner pai (como ul ou table) gerencia todas as interações, eliminando a necessidade de adicionar ou remover ouvintes em cada elemento filho.

index.html

index.html

index.css

index.css

index.js

index.js

copy

1. O que é propagação de eventos?

2. Em qual fase um evento sobe pela árvore DOM após alcançar seu elemento alvo?

3. Por que a delegação de eventos é útil, especialmente com conteúdo dinâmico?

question mark

O que é propagação de eventos?

Select the correct answer

question mark

Em qual fase um evento sobe pela árvore DOM após alcançar seu elemento alvo?

Select the correct answer

question mark

Por que a delegação de eventos é útil, especialmente com conteúdo dinâmico?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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

bookPropagação e Delegação de Eventos Explicadas

Deslize para mostrar o menu

Propagação de Eventos

Propagação de eventos descreve como um evento se move pelo DOM após ser disparado, e possui três fases distintas: Captura, Alvo e Bolha.

Fase de Captura (Capture)

O evento começa na raiz da árvore DOM (window) e desce em direção ao elemento alvo. Os ouvintes de eventos nesta fase capturam o evento enquanto ele se propaga para baixo.

Fase Alvo

O evento alcança o elemento alvo (o elemento que disparou o evento). É neste momento que os ouvintes de eventos anexados ao próprio elemento alvo são executados.

Fase de Bolha (Bubble)

Após alcançar o elemento alvo, o evento começa a subir novamente pela árvore DOM até a raiz (window), passando pelos elementos pai. Esta é a fase mais utilizada, permitindo que elementos pai reajam a eventos disparados por elementos filhos.

index.html

index.html

index.css

index.css

index.js

index.js

copy

O evento se propaga pelo DOM quando o button é clicado. Primeiro, o evento é disparado no button (fase de destino), depois sobe para a div interna e, por fim, para a div externa (fase de propagação).

Delegação de Eventos

Delegação de Eventos é uma técnica que aproveita a propagação de eventos para lidar com eventos de elementos filhos utilizando um único ouvinte de eventos em um elemento pai. Em vez de anexar ouvintes individuais a cada filho, um elemento pai escuta eventos que sobem de seus filhos. Essa abordagem possui duas principais vantagens:

  1. Desempenho: Reduzir o número de ouvintes de eventos melhora o desempenho, especialmente em situações onde elementos são criados dinamicamente (por exemplo, uma lista que cresce conforme novos itens são adicionados);
  2. Manutenibilidade: A delegação de eventos simplifica o código, especialmente ao trabalhar com grandes estruturas DOM ou conteúdo dinâmico.
index.html

index.html

index.css

index.css

index.js

index.js

copy

Em vez de adicionar ouvintes de clique a cada elemento button individualmente, um único ouvinte é adicionado ao elemento pai div. O evento propaga dos elementos button para o div, onde é tratado.

Abordagem Ruim

Abordagem Boa

Exemplo Prático: Manipulando Lista Dinâmica

A delegação de eventos é ideal para gerenciar interações em listas ou tabelas que podem crescer ao longo do tempo (por exemplo, adicionando tarefas a uma lista de afazeres ou produtos a um carrinho de compras). À medida que itens são adicionados ou removidos, o contêiner pai (como ul ou table) gerencia todas as interações, eliminando a necessidade de adicionar ou remover ouvintes em cada elemento filho.

index.html

index.html

index.css

index.css

index.js

index.js

copy

1. O que é propagação de eventos?

2. Em qual fase um evento sobe pela árvore DOM após alcançar seu elemento alvo?

3. Por que a delegação de eventos é útil, especialmente com conteúdo dinâmico?

question mark

O que é propagação de eventos?

Select the correct answer

question mark

Em qual fase um evento sobe pela árvore DOM após alcançar seu elemento alvo?

Select the correct answer

question mark

Por que a delegação de eventos é útil, especialmente com conteúdo dinâmico?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4
some-alt