2012-10-02 17 views
6

Parece que jQuery's trigger() solo ejecuta controladores de eventos vinculados con jQuery. Tengo algunos módulos que usan enlaces de eventos nativos del navegador. Usar el código de https://stackoverflow.com/a/2676527 me funciona, pero me pregunto si hay algo incorporado en jQuery que haga esto.Evento real de desencadenador con jQuery

actualización de: aparentemente funciona para eventos de clic en los botones. Pero no para los eventos de cambio en cajas de selección: http://jsfiddle.net/qxpXV/2/

Para el registro: la piratería de la otra biblioteca para hacer sus consolidaciones con jQuery Qué hacertrigger() trabajo, pero realmente no quiero hacer eso.

+1

@singpolyma ¿Qué quiere decir con enlace de evento nativo del navegador? '.addEventListener()'? Puedo invocar dicho manejador: http://jsfiddle.net/mnrUt/ Hm, incluso si especifico el código a través de un atributo de HTML 'onevent', jQuery' .trigger() 'aún puede ejecutar ese código : http://jsfiddle.net/mnrUt/1/ –

+0

@adeneo Vea mis dos demos arriba. –

+0

@ ŠimeVidas - Parece que funciona, siempre esperaba que no funcionara, ya que los documentos dicen que es para eventos enlazados con jQuery, ¡y nunca llegó a probarlo! – adeneo

Respuesta

1

Puede hacerlo activando/enviando manualmente un evento (según el navegador, fireEvent/dispatchEvent) directamente en el elemento DOM. El código from this answer se encargará del despacho del evento, solo deberá ejecutarlo contra un elemento DOM y no el envoltorio jQuery.

+0

Notarás que me vinculo a un código muy similar en mi pregunta :) – singpolyma

+0

Aceptando esto porque parece ser la única manera. jQuery simplemente no es compatible, por lo que puedo decir :) – singpolyma