2008-09-16 18 views

Respuesta

32

Puede proporcionar una devolución de llamada a las funciones de efectos que se ejecutan después de que se haya completado el efecto.

$("#show-projects").click(function() { 
    $(".page:visible").fadeOut("normal", function() { 
     $("#projects").fadeIn("normal"); 
    }); 
}); 
16

Lo que quiere es una cola.

Consulte la página de referencia http://api.jquery.com/queue/ para algunos ejemplos de trabajo.

+0

.queue() es una función de solo elemento. Si tiene diferentes objetivos de animación, esto no funcionará. – Bora

+0

No veo cómo no funcionaría; usted puede nombrar explícitamente el objetivo en la devolución de llamada, ¿verdad? – Webthusiast

+0

¿Qué pasa si no hay un objetivo? No creo que Queue me funcione aquí, ya que mis dos métodos que deseo iniciar secuencialmente se refieren a objetivos diferentes. – Trip

0

¿Tiene que haber un objetivo? seguramente puede usar un objetivo aleatorio para poner en cola los eventos secuencialmente siempre que el objetivo sea constante ... a continuación, estoy usando el padre de un objetivo de animación para almacenar la cola.

//example of adding sequential effects through 
//event handlers and a jquery event trigger 
jQuery(document).unbind("bk_prompt_collapse.slide_up"); 
jQuery(document).bind("bk_prompt_collapse.slide_up" , function(e, j_obj) { 
    jQuery(j_obj).queue(function() { 
     //running our timed effect 
     jQuery(this).find('div').slideUp(400); 
     //adding a fill delay to the parent 
     jQuery(this).delay(400).dequeue(); 
    }); 
});      
//the last action removes the content from the dom 
//if its in the queue then it will fire sequentially 
jQuery(document).unbind("bk_prompt_collapse.last_action"); 
jQuery(document).bind("bk_prompt_collapse.last_action" , function(e, j_obj) { 
    jQuery(j_obj).queue(function() { 
     //Hot dog!! 
     jQuery(this).remove().dequeue(); 
    }); 
}); 
jQuery("tr.bk_removing_cart_row").trigger( 
    "bk_prompt_collapse" , 
    jQuery("tr.bk_removing_cart_row") 
); 
No

seguro de si es posible, pero parece que se podría unir .dequeue() para disparar cuando otro jquery desencadena el evento, en lugar de disparar en línea en mi ejemplo anterior? efectivamente detener una cola de animación?

Cuestiones relacionadas