Na aula anterior, aprendemos a criar elementos dinamicamente usando JavaScript.
Agora surge uma pergunta muito importante:
Como lidar com eventos (cliques, por exemplo) em elementos que não existiam no HTML inicial?
A resposta para isso é um conceito poderoso chamado Delegação de Eventos.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o problema dos eventos em elementos dinâmicos
- Aprender o conceito de delegação de eventos
- Usar corretamente o objeto
event - Capturar eventos de múltiplos elementos com um único listener
- Escrever código mais performático e organizado
O problema clássico
Imagine uma lista criada dinamicamente:
const ul = document.createElement("ul");
document.body.appendChild(ul);
const li = document.createElement("li");
li.textContent = "Item 1";
ul.appendChild(li);
Agora queremos capturar o clique nesse <li>.
Se adicionarmos o evento diretamente:
li.addEventListener("click", () => { console.log("Item clicado"); }); Funciona… mas não escala bem.
Por que isso vira um problema?
Imagine uma lista com:
- 10 itens
- 100 itens
- 1000 itens
Adicionar um addEventListener para cada item:
- Dá mais trabalho
- Consome mais memória
- Complica a manutenção
Como os eventos funcionam no DOM?
Quando um evento acontece em um elemento, ele sobe na árvore do DOM.
Esse comportamento é chamado de propagação de eventos (event bubbling).
Ou seja:
- O clique acontece no elemento
- Depois sobe para o pai
- Depois para o avô
- E assim por diante
A ideia da delegação de eventos
Em vez de escutar o evento em cada elemento filho, escutamos o evento no elemento pai.
Depois, verificamos quem realmente disparou o evento.
Isso é delegação de eventos.
Exemplo prático: delegando o clique
Vamos refazer o exemplo da lista usando delegação:
const ul = document.createElement("ul");
document.body.appendChild(ul);
["Item 1", "Item 2", "Item 3"].forEach(texto => {
const li = document.createElement("li");
li.textContent = texto;
ul.appendChild(li);
});
ul.addEventListener("click", (event) => {
console.log(event.target.textContent);
});
console.log(event.target.textContent); // Saída será o texto do item clicado Repare: apenas um listener controla todos os itens.
Entendendo o event.target
O event.target indica qual elemento foi clicado.
Já o event.currentTarget indica onde o evento está sendo escutado.
ul.addEventListener("click", (event) =>
{
console.log("Target:", event.target.tagName);
console.log("Current:", event.currentTarget.tagName);
});
console.log("Target:", event.target.tagName); // Saída será "LI"
console.log("Current:", event.currentTarget.tagName); // Saída será "UL"
Filtrando o elemento correto
Às vezes, o pai tem vários tipos de filhos. Podemos filtrar:
ul.addEventListener("click", (event) =>
{
if (event.target.tagName === "LI")
{
console.log("Clique em:", event.target.textContent);
}
}); Por que delegação é tão importante?
- Funciona com elementos dinâmicos
- Reduz quantidade de eventos
- Melhora performance
- Facilita manutenção
Resumo da aula para nunca mais esquecer
- Eventos sobem na árvore do DOM
- Delegação escuta o evento no elemento pai
event.targetindica quem disparou o evento- Um listener pode controlar vários elementos
- É essencial para elementos dinâmicos
Na próxima aula, vamos falar sobre performance no DOM — como escrever código que não deixa a página lenta.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Mortal Kombat - O Filme
O filme Mortal Kombat, inspirado no jogo de mesmo nome, faturou 23 milhões de dólares apenas no fim de semana de estreia nos EUA. Ainda sobre este título de sucesso, outra cifra que impressiona é o faturamento ao longo do primeiro ano: 1 bilhão de dólares no mundo todo.
Máquina de Pascal
A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. Saiba mais.
Space Invaders
O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.
Recorde de patentes
A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.
Senhas
Digitar senhas em computadores de uso coletivo é extremamente perigoso, pois além de softwares de monitoramento, existem dispositivos de hardware que podem capturar suas senhas. Evite ao máximo acessar sites de bancos a partir destes computadores. Veja mais aqui.










