it-swarm-eu.dev

Dormir dans JQuery?

salutations tout ce que je veux faire dormir/attendre JQuery une seconde entre deux fonctions

$('#div1').hide();
//sleep or wait or for a sec 
$("#div2").show();

comment faire

16
Mahmoud Saleh

Pour votre fonction spécifique .show() n'est pas en file d'attente, mais il existe une astuce simple pour la mettre en file d'attente afin que vous puissiez utiliser .delay() , comme ça:

$('#div1').hide();
$("#div2").delay(1000).show(0);

En lui donnant un argument de durée 0, C'est maintenant une animation instantanée mais en file d'attente. En dessous, cela utilise setTimeout() , c'est donc essentiellement le même comportement que:

$('#div1').hide();
setTimeout(function() { $("#div2").show(); }, 1000);
39
Nick Craver

Voilà!

$('#div1').hide();
//sleep or wait or for a sec 
setTimeout('moomoo()', 1000);

function moomoo() {
  $("#div2").show();
}
6
Barrie Reader

Ce qui suit devrait faire ce que vous voulez:

$("#div1").hide();
$("#div2").delay(1000).show(0);
3
Marcus Stade

Vous ne pouvez pas simplement suspendre l'exécution du code entre les appels. Cela signifierait que le navigateur n'afficherait pas la modification provoquée par l'appel hide, car aucune mise à jour n'est effectuée pendant l'exécution du code. Le code semble simplement ne rien faire.

Utilisez la méthode setTimeout pour planifier l'exécution ultérieure du code:

$('#div1').hide();
window.setTimeout(function(){
  $("#div2").show();
}, 1000);

Cela définira l'élément comme masqué et planifiera le code pour qu'il commence plus tard. Le code continuera après l'appel setTimeout afin que la fonction puisse quitter et que le navigateur récupère le contrôle afin qu'il puisse réellement masquer l'élément.

2
Guffa