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?
Tetris
Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.
Street Fighter 2
Street Fighter 2, lançado para o Super Nintendo no início dos anos 90, foi o principal responsável pelo aumento nas vendas deste console. Graças ao sucesso do título nos Arcades e à perfeita adaptação ao console, muitos consumidores adquiriram o SNES para jogarem o título em casa. Saiba mais.
PDP-1
O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.
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.
River Raid
O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.










