Desarrollo en curso, en breve se publicarán el resto de temas.

Capítulo 10: El Flujo de Eventos (Propagation)

Entender cómo se propagan los eventos es crucial para dominar JavaScript en el navegador. Este capítulo cubre uno de los conceptos más importantes: el bubbling y la delegación de eventos.

10.1. Las 3 fases: Capturing, Target, Bubbling

Cuando ocurre un evento, el navegador lo procesa en tres fases:

  1. Capturing (Fase de Captura): El evento baja desde window hasta el elemento objetivo

  2. Target (Fase de Objetivo): El evento llega al elemento que disparó la acción

  3. Bubbling (Fase de Burbujeo): El evento sube desde el elemento objetivo hacia window

Visualización:

window (Capturing) → document → body → div (Target) → body → document → window (Bubbling)

    Desciende               ↓              Asciende
                      Se ejecuta el
                      evento aquí

10.2. Entendiendo el Bubbling (Burbujeo)

Bubbling significa que un evento en un elemento "sube" hacia sus ancestros. Si registras un listener en un elemento padre, se ejecutará incluso si el evento ocurrió en un hijo.

<div class="padre">
    <button class="hijo">Haz clic</button>
</div>

10.3. stopPropagation() y stopImmediatePropagation()

stopPropagation()

Detiene la propagación hacia arriba (no llega a los ancestros).

stopImmediatePropagation()

Detiene la propagación Y evita que se ejecuten otros listeners en el mismo elemento.


10.4. Event Delegation: El patrón de oro

Event Delegation significa registrar un listener en un elemento padre que captura eventos de muchos elementos hijo. Esto es extremadamente eficiente para listas dinámicas.

Problema sin delegación (ineficiente):

Solución con delegación (eficiente):

Patrón mejorado con closest():


10.5. Casos prácticos de delegación

Caso 1: Tabla con botones dinámicos

Caso 2: Carrito de compras


10.6. Captura (Capturing Phase) - Uso avanzado

Por defecto, los listeners se registran en la fase de bubbling. Para registrarse en la fase de captura, usa el tercer parámetro:

Esto es raro que se necesite, pero en casos muy específicos de frameworks es útil.


Resumen del Capítulo

El bubbling es lo que permite la delegación de eventos, una técnica fundamental para aplicaciones eficientes. En lugar de registrar miles de listeners, registra uno en el padre y usa evento.target para identificar quién disparó el evento. Esta es la base de los frameworks modernos como React.

💡 Conceptos Clave:

  • Captura, Target, Bubbling: Las tres fases de un evento

  • Bubbling: El evento "sube" hacia los ancestros

  • stopPropagation(): Evita que el evento suba

  • stopImmediatePropagation(): Evita propagación y otros listeners

  • Event Delegation: Usar un listener en el padre para muchos hijos

  • evento.target: El elemento que disparó el evento

  • closest(): Subir hasta encontrar un selector (ideal con delegación)

  • Eficiencia: Delegación es mucho más rápida que muchos listeners

🤔 Preguntas de Reflexión:

  1. ¿Por qué es importante entender el bubbling?

  2. ¿Cuál es la diferencia entre stopPropagation() y stopImmediatePropagation()?

  3. ¿Cuándo usarías event delegation?

  4. ¿Cómo usarías evento.target para identificar el elemento clicado?

  5. ¿Por qué la delegación es más eficiente que registrar listeners individuales?

  6. Crea una lista donde cada item puede ser clicado para cambiar de color, usando delegación.


Última actualización

¿Te fue útil?