2010-05-28 15 views
7

general del problemajQuery controlador de eventos en cola

En jQuery, el orden en que se enlaza un manejador es el orden en el que se ejecutará si va a enlazar al mismo elemento.

Por ejemplo:

$('#div1').bind('click',function(){ 
// code runs first 
}); 

$('#div1').bind('click',function(){ 
// code runs second 
}); 

Pero lo que si quiero que el segundo código como que se ejecute en primer lugar?

.

Mi solución actual

Actualmente, mi solución es modificar la cola de eventos:

$.data(domElement, 'events')['click'].unshift({ 
          type : 'click', 
          guid : null, 
          namespace : "", 
          data : undefined, 
          handler: function() { 
           // code 
          } 
         }); 

.

Pregunta

¿Hay algo potencialmente malo con mi solución?

¿Puedo utilizar nulo de forma segura como valor para el guid?

Gracias de antemano.

.

Respuesta

1

Hay un complemento interesante llamado eventstack. Te permite vincular eventos a la parte superior o inferior de la cola de eventos. No sé cuán general es su problema, o si está buscando revertir o ordenar eventos de manera arbitraria en su pila, pero el complemento puede simplificar su tarea.

Si está buscando armar su cola en un orden muy específico, puede probar el enfoque sugerido en this answer - crear eventos personalizados que se puedan disparar entre sí.

Su enfoque puede ser el mejor para su requerimiento, pero quizás estas también sean opciones.

+0

Gracias. Como escribo un complemento, no deseo que el usuario active manualmente un evento personalizado que realicé cada vez. Quiero que sea automático. Eventstack tampoco sirve de ayuda porque no quiero invertir la pila, simplemente coloco el evento de mi complemento al principio de la pila. – resopollution

Cuestiones relacionadas