2011-07-28 7 views
12

Tengo un evento personalizado que he creado que me gustaría activar en algún momento sin relevancia para la selección.Activación del evento jQuery en todos los oyentes

I.E - Me gustaría hacer algo que se comportaría como correr

$("*").trigger('customEvent'); 

Pero la documentación de jQuery advierte que el uso del selector universal es muy lento. ¿Hay alguna manera de activar todos los objetos que están vinculados a un evento específico sin tener que usar el selector universal $("*")?

Gracias!

P.S - Actualmente estoy usando un class específico llamado custom_event_listener y uso $('.custom_event_listener').trigger('customEvent') para evitar el uso de un selector universal. Me pregunto si hay una manera de evitar el uso de un class.

+0

¿No puedes dejar que este evento burbujee y capturarlo en un nivel superior? – Andre

+0

Por lo tanto, desea hacer algo con todos los elementos, pero no con seleccionar todos los elementos. Tiene que haber otra forma de reducir la selección, pero no podemos saber qué es sin más información sobre lo que estás haciendo. – Zirak

+0

@Andre No estoy seguro de lo que eso significa. una especie de novato en jQuery. Voy a googlear los eventos de burbuja jQuery y ver si me ayuda. – Ben

Respuesta

15

Usted puede disparar un evento en todo lo que tiene un controlador con destino así:

$.event.trigger('customEvent'); 

This loops through $.cache to find what actually has a handler, then fires on those elements ... en lugar de sólo encontrar cada elemento y disparando el evento en cada uno.

+0

La mejor respuesta hasta ahora. Si no obtengo una respuesta que lo limite aún más, lo marcaré como la respuesta. – Ben

+3

Esto no está documentado y está en desuso: https://github.com/jquery/jquery/blob/935eb19d87063ec30b717b3d45368d3c73cb591d/jquery-migrate.js#L481 –

Cuestiones relacionadas