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

109
Vistas
Controlador global onclick frente a controladores de eventos por elemento

Considere este ejemplo:
Está creando un sitio web que utiliza la representación del lado del cliente. Cuando el usuario hace clic en un enlace, desea desactivar la navegación del navegador y mostrar la nueva página usted mismo.

Tal vez también tenga algo de html como este, y quiera llamar a upvote_post(id) cada vez que se haga clic en el botón:

 <post-element data-id=12345> ... <upvote-button></upvote-button> </post-element>

La forma común de manejar estos dos casos sería agregar un controlador de eventos de click en cada elemento <a> , <upvote-button> , etc. que genere.

Pero, ¿no sería mejor simplemente agregar un controlador de eventos en el documento mismo?

 document.addEventListener('click', function(e) { for (let elem of e.path) { if (elem instanceof HTMLAnchorElement && elem.origin==window.location.origin) { e.preventDefault() render_page(elem.href) break } else if (elem.tagName=='UPVOTE-BUTTON') { let post = elem.closest('post-element') upvote_post(post.dataset.id) break } } })

Por supuesto, se siente mal pasar por alto el sistema de manejo de eventos incorporado, pero no puedo pensar en ninguna desventaja aquí.
Todavía puede agregar controladores de eventos a elementos específicos si lo necesita, pero para acciones comunes, esta parece una mejor solución.

about 4 years ago · Juan Pablo Isaza
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