2010-09-07 12 views
5

Necesito hacer algo fadeIn, luego permanecer allí por un segundo y luego desaparecer usando JQuery.usando jquery cómo usar fadein, delay y luego fadeout issue

He intentado esto pero ¿por qué no funciona?

$('#' + uMessage).fadeIn("fast").fadeOut("slow"); // works 
$('#' + uMessage).fadeIn("fast").delay(1000).fadeOut("slow"); // fails 

¿Alguna sugerencia en donde estoy yendo mal?

Muchas gracias!

+1

¿Dónde falla? ¿Hace algo? –

+0

ah, lo siento, no se desvanece cuando agrego el retraso ... –

+0

¿Está llamando '.stop()' o borrando la cola de algún * otro * modo? –

Respuesta

12

Su segundo enfoque debe estar bien hecho, que corresponde a la documentación (http://api.jquery.com/delay/)

Otro enfoque puede ser el uso de la función de devolución de llamada que se llama cuando el fadeIn ha terminado:

$('#' + uMessage).fadeIn("fast", function() { $(this).delay(1000).fadeOut("slow"); }); 

sólo una adivinar

Editar:

Si no puede utilizar el método de retardo(), entonces usted podría intentar éste:

$('#' + uMessage).fadeIn("fast", function() { 
    c_obj = $(this); 
    window.setTimeout(function() { $(c_obj).fadeOut("slow"); }, 1000); 
}); 

He aquí un ejemplo: http://jsfiddle.net/KwWFR/

+0

esto no funciona para mí, alguna idea? –

+1

funciona al menos con jQuery v1.4.2: http://jsfiddle.net/D4eMb/1/ – sled

+0

He agregado otra solución – sled

3

tratan Tal vez usando una devolución de llamada como se especifica en el API para FadeIn función. Se llamará esto una vez que se complete el fundido.

$('#' + uMessage).fadeIn("fast", function() { 
    $(this).delay(1000).fadeOut("slow"); 
}); 
1

Creo que el problema radica en la versión de jQuery que utilice:

http://jsfiddle.net/b85hx/

Ésta funciona bien. Cambia a 1.3.2 y está roto.

+0

im usando v1.3.2 –

+0

En ese caso, actualice o vaya a la solución @ sled –

2

retardo con Fundir Fundido en negro simplemente no funciona. Usando una combinación con cola después de demora y una devolución de llamada a veces funciona para otras situaciones

Esto terminó trabajando para mí:

$('#message').fadeIn(function() { 
    window.setTimeout(function() { 
    $('#message').fadeOut('slow'); 
    }, 2000); 
}); 
0

documentación oficial de jQuery dice, que el segundo parámetro no es una devolución de llamada, pero aliviando estilo.

http://api.jquery.com/fadeIn/#fadeIn-duration-easing-complete http://api.jquery.com/fadeOut/#fadeOut-duration-easing-complete

$('#el').fadeOut(750,'swing',function(){ 
    $('#el').fadeIn(); 
}); 

Así basta con mover el parámetro de devolución de llamada al 3 y todo va a funcionar.

+0

intenté con jquery 1.3.2 - la función no se activa. – user1380540

+0

luego informe a jQuery, porque debe disparar de acuerdo con los documentos. Apuesto a que tienes problemas con el selector o algún otro lugar. –

Cuestiones relacionadas