LECCIÓN 35 / 60 · Eventos e interacción

Escucha clics de una lista desde su contenedor

Al terminar, podrás: escuchar varios botones desde un contenedor

Ampliación opcionalNavegador / DOM

Conviene conocer: Lección 31 · Responde a un clic con addEventListener

La idea clave

En lugar de colocar una escucha en cada elemento de una lista, puedes registrar una sola en el contenedor. Esto se llama delegación de eventos.

Ejemplo paso a paso

Este ejemplo muestra la idea en acción. Sigue los pasos y después cámbialo tú.

Ejemplo explicado
document.querySelector('#lista').addEventListener('click', event => {
  if (event.target.tagName === 'BUTTON') {
    document.querySelector('#saludo').textContent = event.target.textContent;
  }
});
  1. El listener está en la lista, no en cada botón.
  2. Cuando se pulsa uno de sus botones, el evento llega al contenedor.
  3. event.target permite leer cuál fue el botón pulsado.

Practica con código

Antes de empezar, piensa: ¿Hace falta una nueva escucha para el botón que añadas?

Añade al HTML un tercer botón dentro de la lista, con el texto «Tres». Púlsalo.

El resultado que buscamos

El nuevo botón funciona sin añadir otro listener en JavaScript.

HTML + CSS + JS Practica aquí
Tu misión

Añade al HTML un tercer botón dentro de la lista, con el texto «Tres». Púlsalo.

Vista previa aislada · Sin acceso al sitio principal
Consola
Lista para ejecutar.
Sin comprobar
Escribe tu cambio y pulsa «Comprobar solución». Puedes intentarlo tantas veces como quieras.
Listo
Necesito una pista

Abre HTML y copia uno de los elementos li.

Una pista más

Cambia el texto del botón nuevo por «Tres» y ejecútalo.

Ver solución y explicación

Añade <li><button type="button">Tres</button></li> dentro del ul.

Qué debes recordar: Un listener en la lista puede responder a botones que se añadan después.

Práctica pendiente de corregir

La lectura, las prácticas corregidas y las autoevaluaciones guiadas se guardan por separado en este navegador.

Revisado editorialmente · Referencia técnica específica ↗