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{ js }
document.querySelector('#lista').addEventListener('click', event => {
if (event.target.tagName === 'BUTTON') {
document.querySelector('#saludo').textContent = event.target.textContent;
}
});
Editar y probar este mismo ejemplo ↓
- El listener está en la lista, no en cada botón.
- Cuando se pulsa uno de sus botones, el evento llega al contenedor.
- 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 buscamosEl nuevo botón funciona sin añadir otro listener en JavaScript.
HTML + CSS + JS Practica aquí
Tu misiónAñ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
ConsolaLista 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 ↗