2012-03-23 38 views
10

Tengo dos funciones enganchadas en el evento submit de un formulario. Cada función está en un lugar diferente, y una función puede afectar a la otra.jquery prioridad de evento

¿Cómo puedo forzar que una de estas funciones se enganche con la prioridad más baja (es decir, sea la última en ejecutarse)?

+3

Con jQuery, los controladores de eventos se ejecutan en el orden en que se han vinculado. Así que únelos en el orden correcto y estará bien. –

+0

por favor denos un código – Har

+0

ok, el problema es que no quiero que mi código esté ligado a esta cosa de orden predefinida :( – Alex

Respuesta

7

Hay cuatro maneras que se me ocurren:

  1. Administrar las devoluciones de llamada a sí mismo, y sólo tenemos un controlador de eventos que llama a las funciones en el orden deseado.

  2. En la función que se supone que se disparó al último, realice el trabajo real en un tiempo de espera de cero milisegundos. Si todas las otras funciones funcionan sincrónicamente (y puede vivir con la última que no ocurre durante el evento de burbujeo), esto logrará lo mismo.

  3. Enlaza el último controlador que se ha disparado más arriba en el árbol DOM. Deberá probar si funciona con los eventos submit; El borboteo de estos eventos no funciona en IE, pero el jQuery docs menciona que esto se ha normalizado en jQuery. Puede valer la pena intentarlo.

  4. Algo similar a 1., al vincular cualquier otro controlador que el de baja prioridad, desvincular el último, enlazar el nuevo y finalmente volver a vincular el último en ser ejecutado.

2

Se puede usar eventos personalizados para los manipuladores y tienen el primer controlador de capturar la presente para evitarlo, hacer sus cosas, desencadenar el evento para el segundo controlador y tienen la segunda no la presenten