ExpertiDict

JavaScript · Intermediário · Português · Técnico

delegação de eventos

/delegaˈsɐ̃w dʒi eˈvẽtus/substantivo

Técnica que coloca um único ouvinte num elemento pai para tratar eventos dos filhos, aproveitando o bubbling. Funciona também para filhos criados depois.

Onde usar

Usada em listas grandes ou dinâmicas, no lugar de um ouvinte por item. Em code review, economiza memória e evita esquecer de registrar ouvinte nos itens novos.

Em código

const lista = document.querySelector('ul');
lista.addEventListener('click', (ev) => {
  const li = ev.target.closest('li');
  if (!li || !lista.contains(li)) return;
  console.log('item', li.textContent);
});

Exemplos

Em vez de um ouvinte por linha, usei delegação de eventos na tabela.

Com delegação de eventos, as linhas novas já respondem ao clique.

Cuidado

Esquecer que o alvo pode ser um filho interno do item, quando é preciso usar event.target.closest para achar o elemento certo.

Sinônimos

event delegation

Veja também

Todos os termos de JavaScript