2010-09-07 7 views
5

J'ai besoin de faire quelque chose fadeIn, puis restez là pendant une seconde puis fadeOut en utilisant JQuery.en utilisant jquery comment utiliser fadein, delay et ensuite fadeout issue

J'ai essayé cela mais il fonctionne dosent pour une raison quelconque ???

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

des suggestions où je vais mal?

Merci beaucoup !!!

+1

Où cela échoue-t-il? Est-ce que ça fait quelque chose? –

+0

ah, désolé, il ne fadeout pas quand j'ajoute le retard .. –

+0

Appelez '.stop()' ou effacer la file d'attente d'une autre * manière? –

Répondre

12

Votre deuxième approche devrait être bien fait, ce qui correspond à la documentation (http://api.jquery.com/delay/)

Une autre approche peut être d'utiliser la fonction de rappel qui est appelée lorsque le fadeIn a terminé:

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

juste deviner

Edit:

Si vous ne pouvez pas utiliser la méthode retard(), vous pouvez alors essayer celui-ci:

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

Voici un exemple: http://jsfiddle.net/KwWFR/

+0

cela ne fonctionne pas pour moi, des idées? –

+1

cela fonctionne au moins avec jQuery v1.4.2: http://jsfiddle.net/D4eMb/1/ – sled

+0

J'ai ajouté une autre solution – sled

3

Peut-être essayer l'aide d'un rappel comme spécifié dans l'API pour FadeIn fonction. Cela sera appelé une fois que le fondu est terminé.

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

Je pense que le problème réside dans la version de jQuery que vous utilisez:

http://jsfiddle.net/b85hx/

Celui-ci fonctionne très bien. Passez en 1.3.2 et c'est cassé.

+0

im en utilisant v1.3.2 –

+0

Dans ce cas, mettre à jour ou aller pour la solution @ traîneau –

2

retard avec fondu en fondu ne fonctionne tout simplement pas. En utilisant une combinaison avec la file d'attente après un délai et un rappel fonctionne parfois pour d'autres situations

Cela a fini par travailler pour moi:

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

documentation officielle jQuery dit, ce deuxième param n'est pas un rappel, mais le style easing.

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(); 
}); 

Alors il suffit de déplacer votre rappel au 3 et tout param fonctionnera.

+0

essayé avec jquery 1.3.2 - la fonction ne se déclenche pas. – user1380540

+0

puis rapportez à jQuery, car il doit tirer selon docs. Je parie que vous avez un problème avec sélecteur ou un autre endroit cependant. –