volver

Event Delegation

Es una buena práctica en JavaScript que permite manejar eventos en múltiples elementos utilizando un único event listener añadido al elemento padre.

En lugar de añadir un event listener a cada elemento hijo individualmente, se añade un único event listener al elemento padre para escuchar eventos que ocurren en los elementos hijos.

Cuando ocurre un evento en un elemento hijo, el evento se propaga hacia el elemento padre, que puede utilizar el objeto evento para determinar cuál elemento hijo desencadenó el evento.

Esto permite manejar eventos en múltiples elementos hijos con un único event listener añadido al elemento padre.

Un ejemplo:

const parentElement = document.querySelector('.parent')

parentElement.addEventListener('click', function (event) {
  if (event.target.classList.contains('child')) {
    console.log('Hiciste clic en el elemento hijo')
  }
})

Explicación

En este ejemplo, tenemos un elemento padre con una clase "parent" y múltiples elementos hijos con una clase "child".

En lugar de añadir un event listener a cada elemento hijo, añadimos un único event listener al elemento padre utilizando el método addEventListener()

Dentro de la función del event listener, utilizamos la propiedad event.target para determinar cuál elemento hijo desencadenó el evento.

Luego, comprobamos si el elemento event.target tiene una clase "child" utilizando el método classList.contains(), y si es así, imprimimos un mensaje en la consola.

Al utilizar Event Delegation, podemos manejar eventos en múltiples elementos hijos con un único event listener añadido al elemento padre.

Este enfoque puede llevar a un código más limpio y eficiente, especialmente cuando se trabaja con un gran número de elementos hijos.

¿Es una buena práctica?

Sí, Event Delegation es generalmente considerada una buena práctica en JavaScript, especialmente cuando se tiene un gran número de elementos hijos que necesitan manejar el mismo tipo de evento. Aquí hay algunas razones:

Uso reducido de memoria: Añadir múltiples event listeners a elementos hijos puede consumir mucha memoria, lo que puede ralentizar tu aplicación. Event Delegation te permite añadir un único event listener al elemento padre, lo que consume menos memoria.

Mejor rendimiento: Al añadir un único event listener al elemento padre, tu código será más eficiente. Esto se debe a que el navegador no tiene que pasar tiempo añadiendo y eliminando event listeners en cada elemento hijo.

Elementos dinámicos: Event Delegation también funciona bien con elementos generados dinámicamente. Si añades un nuevo elemento hijo al elemento padre, automáticamente heredará el event listener, sin tener que añadir un nuevo event listener al nuevo elemento.

Código simplificado: Utilizar Event Delegation también puede hacer que tu código sea más sencillo y fácil de mantener. En lugar de tener que añadir event listeners a múltiples elementos hijos, puedes añadir un único event listener al elemento padre y manejar eventos en todos los elementos hijos en una sola función.

En resumen, Event Delegation puede llevar a un código más eficiente y fácil de mantener, especialmente cuando se trabaja con un gran número de elementos hijos.

Conclusión

Ya seas principiante o desarrollador experimentado en JavaScript, dominar Event Delegation es una habilidad esencial que puede ayudarte a construir mejores aplicaciones web.