2011-09-11 9 views
6

La pregunta es bastante simple. Si selecciono dos o más elementos con jQuery y, por ejemplo, uso la función fadeOut() de jQuery para ocultarlos, la función de devolución de llamada se invoca dos veces (para cada elemento). ¿Hay alguna forma de recibir solo una devolución de llamada?Ocultar elementos múltiples con jQuery y obtener una devolución de llamada

El código que estoy usando actualmente para llevar a cabo esta tarea se pega a continuación.

$('#element-1, #element-2').fadeOut(250, function() { /* Callback invoked twice. */ }); 

Una pregunta similar se ha publicado antes (jQuery multiple animate() callback), pero la solución parece bastante complicado de lo que parece un problema sencillo.

Respuesta

16

Puede utilizar $.when[docs] (deferred objects):

$.when($('#element-1, #element-2').fadeOut(250)).then(function() { 
    // do something 
}); 

DEMO

Esto funciona con cualquier animación que yo sepa.

+0

¿Hay alguna otra manera? parece tan andante ... ¿O debe ser considerado como una forma adecuada en jQuery y solo es mi ignorancia que los objetos? –

+0

No conozco otra forma y la documentación '.animate' tampoco menciona nada. –

Cuestiones relacionadas