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?
Mega Man
A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.
Nintendo Wii
Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!
Galaxy Game
As primeiras máquinas de fliperama do mundo a utilizarem moedas, chamadas de Galaxy Game, custavam mais de 20 mil dólares para serem produzidas. Saiba mais sobre elas aqui.
Final Fantasy X
O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!
Muitos aplicativos
Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.










