55 votes

Jquery $('#div').show().delay(5000).hide() ; ne fonctionne pas

J'essaie d'afficher une div qui est réglée sur display: none; pendant 5 secondes avec

$('#div').show().delay(5000).hide();

mais ça ne marche pas, ça va directement à hide()

L'un d'entre vous peut-il m'aider ?

123voto

jAndy Points 93076

Procédez de la manière suivante :

$('#div').show(0).delay(5000).hide(0);

En transmettant des chiffres à .show() y .hide() jQuery intègre ces méthodes dans son module interne file d'attente fx (même si le nombre est nul). Puisque .delay() ne fonctionne qu'à l'intérieur d'une file d'attente, vous avez besoin de cette petite solution de contournement.

exemple : http://jsfiddle.net/zceKN/

8voto

gilly3 Points 33285

Vous devez utiliser .queue() parce que .hide() n'est pas mis en file d'attente par défaut.

$("#div").show().delay(5000).queue(function (next) {
    $(this).hide();
    next();
});

3voto

Paulpro Points 54844

Vous avez besoin d'une durée sur votre cache pour que cela fonctionne :

$('#div').show('slow').delay(5000).hide('slow');

Exemple : http://jsfiddle.net/Paulpro/GLTaB/

2voto

genesis Points 32591
$('#div').show();
setTimeout(function(){$('#div').hide();}, 5000);

.delay() ne fonctionne que pour les animations

2voto

Jared Farrish Points 26391
$('#div').show().delay(5000).fadeOut(1);

http://jsfiddle.net/userdude/TM9p9/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X