Je veux ajouter une classe, attendre 2 secondes et ajouter une autre classe.
.addClass("load").wait(2sec).addClass("done");
Y a-t-il un moyen?
setTimeout exécutera du code après un délai d'un certain temps (mesuré en millisecondes). Cependant, une note importante: en raison de la nature du javascript, le reste du code continue de s'exécuter après la configuration du minuteur:
$('#someid').addClass("load");
setTimeout(function(){
$('#someid').addClass("done");
}, 2000);
// Any code here will execute immediately after the 'load' class is added to the element.
Ce serait
.delay()
.http://api.jquery.com/delay/
Si vous faites des trucs AJAX, vous ne devriez vraiment pas simplement écrire automatiquement "done", vous devriez vraiment attendre une réponse et voir si c'est réellement fait.
la source
.removeClass('load')
votre ajout des deux classes se charge et se termine, ce qui est probablement indésirable. Si vous attendez effectivement qu'une action asynchrone se termine, votre meilleur pari est de faire .addClass QUAND elle se termine et réussit, sinon .addClass ('erreur') peut-être une idéedelay () ne fera pas le travail. Le problème avec delay () est qu'il fait partie du système d'animation et ne s'applique qu'aux files d'attente d'animation.
Et si vous voulez attendre avant d'exécuter quelque chose en dehors de l'animation ??
Utilisez ceci:
Que se passe-t-il?: Dans ce scénario, il attend 600 millisecondes avant d'exécuter le code spécifié entre les accolades.
Cela m'a beaucoup aidé une fois que je l'ai compris et j'espère que cela vous aidera également!
AVIS IMPORTANT: «window.setTimeout» se produit de manière asynchrone. Gardez cela à l'esprit lorsque vous écrivez votre code!
la source
Sachez que c'est une vieille question, mais j'ai écrit un plugin pour résoudre ce problème que quelqu'un pourrait trouver utile.
https://github.com/madbook/jquery.wait
vous permet de faire ceci:
la source
Il y a une fonction, mais c'est extra: http://docs.jquery.com/Cookbook/wait
Ce petit extrait de code vous permet d'attendre:
la source
Vous pouvez utiliser la
.delay()
fonction.Voici ce que vous recherchez:
la source
Le plugin xml4jQuery donne la méthode sleep (ms, callback). La chaîne restante serait exécutée après la période de sommeil.
la source
Utilisation de la fonction setTimeout, par exemple Visitez ici par exemple
la source