Quiz

Explique delegação do evento

Topics
Web APIsJavaScript
Edit on GitHub

A delegação de eventos é um conceito fundamental no desenvolvimento web que permite gerenciar e tratar eventos eficientemente em vários elementos filhos, anexando um único ouvinte de eventos a um elemento ancestral comum. Em vez de atribuir ouvintes de eventos a cada elemento filho individualmente, você delega a responsabilidade de lidar com eventos ao elemento pai ou ancestral, que intercepta os eventos à medida que eles sobem na árvore DOM e identifica o alvo do evento.

Benefícios da delegação de eventos

  1. Eficiência: A delegação de eventos reduz significativamente o número de ouvintes de eventos em seu código, tornando-o mais eficiente em termos de memória e melhorando o desempenho, especialmente ao lidar com um grande número de elementos semelhantes. Isso resulta em um código mais limpo e de fácil manutenção.

  2. Elementos Dinâmicos: A delegação de eventos funciona perfeitamente com elementos gerados ou removidos dinamicamente no DOM. Você não precisa anexar ou remover ouvintes de eventos toda vez que novos elementos são adicionados ou removidos. O ouvinte de eventos delegado os trata automaticamente.

Exemplo

Vamos ilustrar a delegação de eventos com um exemplo moderno usando a sintaxe do ES6:

// HTML:
// <ul id="item-list">
// <li>Item 1</li>
// <li>Item 2</li>
// <li>Item 3</li>
// </ul>
const itemList = document.getElementById('item-list');
itemList.addEventListener('click', (event) => {
if (event.target.tagName === 'LI') {
console.log(`Clicou em ${event.target.textContent}`);
}
});

Neste exemplo, um único ouvinte de eventos de clique é anexado ao elemento <ul>. Quando ocorre um evento de clique em um elemento <li>, o evento se propaga até o elemento <ul>, onde o ouvinte de eventos verifica o nome da tag do alvo para identificar qual item da lista foi clicado.

Casos de uso

A delegação de eventos é comumente usada em várias situações, incluindo:

  1. Gerenciamento de listas, menus ou tabelas com muitos itens ou linhas.
  2. Manipulação de conteúdo dinâmico em aplicativos de página única.
  3. Simplificação do código, evitando a necessidade de anexar e remover ouvintes de eventos para elementos que mudam.

Recursos

Edit on GitHub