JavaScript - Agregue un detector de eventos a varios elementos en Vanilla JS
Esta es una publicación súper rápida para mostrar cómo agregar un detector de eventos a múltiples elementos HTML en JavaScript puro.
Tuve que hacer esto recientemente para manejar los eventos de clic en uno o más elementos emergentes modales en una sola página.
Evento de JavaScript burbujeante
Los eventos en javascript se propagan (o burbujean) hacia arriba en el árbol DOM desde el elemento target
a través de sus padres hasta el elemento raíz (html
), los objetos document
y window
.
Entonces, para escuchar eventos en varios elementos, puede agregar un solo detector de eventos al objeto document
y verificar el elemento target
.
El siguiente fragmento agrega efectivamente un detector de eventos 'click'
a todos los elementos con la clase CSS 'jw-modal'
para cerrar las ventanas emergentes modales al hacer clic en segundo plano. Para obtener una demostración del código, consulte Vanilla JS + CSS - Tutorial emergente modal (diálogo) con ejemplo.
// close modals on background click
document.addEventListener('click', event => {
if (event.target.classList.contains('jw-modal')) {
closeModal();
}
});
Recorriendo elementos con forEach
Alternativamente, puede agregar múltiples detectores de eventos recorriendo múltiples elementos con el método javascript forEach
.
El siguiente fragmento obtiene el mismo resultado que el anterior al recorrer los elementos de destino. Utiliza querySelectorAll()
para obtener todos los elementos con la clase CSS ('jw-modal'
) y agrega un detector de eventos de clic a cada uno.
El único inconveniente de este enfoque es que no cubrirá los elementos dinámicos que se agregan más adelante, mientras que el ejemplo de creación de eventos incluirá elementos dinámicos porque está escuchando en el objeto raíz document
.
document.querySelectorAll('.jw-modal').forEach(el => {
el.addEventListener('click', event => closeModal());
});
Suscríbete o Sígueme para actualizaciones
Suscríbete a mi canal de YouTube o sígueme en Twitter, Facebook o GitHub para recibir notificaciones cuando publique contenido nuevo.
- Suscríbete en YouTube en https://www.youtube.com/JasonWatmore
- Sígueme en Twitter en https://twitter.com/jason_watmore
- Sígueme en Facebook en https://www.facebook.com/JasonWatmoreBlog
- Sígueme en GitHub en https://github.com/cornflourblue
- Feed formats available: RSS, Atom, JSON
Aparte de la codificación...
Actualmente estoy intentando viajar por Australia en motocicleta con mi esposa Tina en un par de Royal Enfield Himalayan. Puedes seguir nuestras aventuras en YouTube, Instagram y Facebook.
- Suscríbete en YouTube en https://www.youtube.com/TinaAndJason
- Síguenos en Instagram en https://www.instagram.com/tinaandjason
- Síguenos en Facebook en https://www.facebook.com/TinaAndJasonVlog
¿Necesita Ayuda Vanilla JS?
Buscar fiverr para encontrar ayuda rápidamente de desarrolladores Vanilla JS experimentados.