Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
Cómo hacer que el detector de eventos siga funcionando después de agregar elementos al DOM (js puro)

Tengo este oyente:

 //close all detail tags when click happens outside document.addEventListener('click', function(e) { if (!details.some(f => f.contains(e.target))) { details.forEach(f => f.removeAttribute('open')); } else { details.forEach(f => !f.contains(e.target) ? f.removeAttribute('open') : ''); } })

cierra automáticamente todas las etiquetas de detalles abiertas cuando se hace clic en una nueva o cuando hace clic en cualquier parte de la página, eso funciona bien. Los problemas surgen cuando se agrega dinámicamente una nueva etiqueta de detalle, entonces el oyente no funcionará para ellos. Estaba leyendo otras preguntas relacionadas y la delegación más sugerida, pero este no parece ser el caso porque el oyente también debería funcionar tanto para etiquetas normales como para etiquetas dinámicas.

Intenté algunas sugerencias como esta:

 document.addEventListener('click', function(e){ if(e.target && e.target.id== 'myDynamicallyAddedElementID'){ //my code } });

pero sin cambios. Puedes probarlo aquí https://jsfiddle.net/nxv03wjo/ y aquí https://jsfiddle.net/nxv03wjo/1/

¿Cuál es el truco aquí?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Simplemente recuperar los elementos de details dentro del oyente de clics?

 document.addEventListener('click', function (e) { const details = [...document.querySelectorAll('details')]; if (!details.some(f => f.contains(e.target))) { details.forEach(f => f.removeAttribute('open')); } else { details.forEach(f => !f.contains(e.target) ? f.removeAttribute('open') : ''); } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda