Comment masquer les #résultats après 5 secondes? J'ai essayé ça mais ça ne marche pas.

$('#results').hide().html(data).fadeIn('slow').delay(5000).hide();

Ce que j'avais c'est celui-ci

$('#results').hide().html(data).fadeIn('slow');
11
EnexoOnoma 30 sept. 2011 à 04:45

3 réponses

Meilleure réponse

Mettez une durée sur votre hide() appel et cela fonctionnera comme ceci:

$('#results').hide().html(data).fadeIn('slow').delay(5000).hide(1);

Le problème est que hide() sans aucun paramètre n'est qu'une opération immédiate. Il ne passe pas par la file d'attente fx, donc il ne vient pas après le .delay(5000). Mais, si vous donnez une durée à la fonction comme .hide(1), alors elle devient une animation et elle passe par la file d'attente fx et viendra donc après le .delay(5000).

Vous pouvez le voir fonctionner ici: http://jsfiddle.net/jfriend00/wzbtU/


Dans le doc jQuery pour hide():

Lorsqu'une durée est fournie, .hide () devient une méthode d'animation.

19
jfriend00 30 sept. 2011 à 00:55

Vous devez utiliser setTimeout.

setTimeout("$('#results').hide().html(data).fadeIn('slow');", 5000);

La raison pour laquelle .delay(5000) ne fonctionne pas est que .hide() n'est pas inclus dans la file d'attente d'animation.

0
Jason Barry 30 sept. 2011 à 00:49

Voulez-vous dire quelque chose comme:

$('#results').hide().html(data).fadeIn('slow');

setTimeout(function() {
    $('#results').hide();
}, 5000);
4
Daniel Pryden 30 sept. 2011 à 00:48
7604880