Ich möchte eine Klasse hinzufügen, 2 Sekunden warten und eine weitere Klasse hinzufügen.
.addClass("load").wait(2sec).addClass("done");
Gibt es irgendeinen Weg?
setTimeout führt einen Code nach einer Verzögerung von einer bestimmten Zeitspanne aus (gemessen in Millisekunden). Ein wichtiger Hinweis: Aufgrund der Natur von Javascript wird der Rest des Codes nach dem Einrichten des Timers weiterhin ausgeführt:
$('#someid').addClass("load");
setTimeout(function(){
$('#someid').addClass("done");
}, 2000);
// Any code here will execute immediately after the 'load' class is added to the element.
Das wäre
.delay()
.http://api.jquery.com/delay/
Wenn Sie AJAX-Sachen machen, sollten Sie wirklich nicht einfach automatisch "fertig" schreiben, sondern wirklich auf eine Antwort warten und sehen, ob sie tatsächlich fertig ist.
quelle
.removeClass('load')
sonst dein Hinzufügen beider Klassen laden und erledigen, was wohl unerwünscht ist. Wenn Sie tatsächlich darauf warten, dass eine asynchrone Aktion abgeschlossen wird, ist es am besten, .addClass auszuführen, wenn sie abgeschlossen ist und erfolgreich ist. Wenn nicht, ist .addClass ('Fehler') möglicherweise eine Ideedelay () erledigt den Job nicht. Das Problem mit delay () ist, dass es Teil des Animationssystems ist und nur für Animationswarteschlangen gilt.
Was ist, wenn Sie warten möchten, bevor Sie etwas außerhalb der Animation ausführen?
Benutze das:
Was passiert?: In diesem Szenario wartet es 600 Millisekunden, bevor der in geschweiften Klammern angegebene Code ausgeführt wird.
Das hat mir sehr geholfen, als ich es herausgefunden habe und hoffe, dass es auch Ihnen hilft!
WICHTIGER HINWEIS: 'window.setTimeout' erfolgt asynchron. Denken Sie daran, wenn Sie Ihren Code schreiben!
quelle
Erkenne, dass dies eine alte Frage ist, aber ich habe ein Plugin geschrieben, um dieses Problem zu beheben, das jemand nützlich finden könnte.
https://github.com/madbook/jquery.wait
können Sie dies tun:
quelle
Es gibt eine Funktion, aber sie ist extra: http://docs.jquery.com/Cookbook/wait
Mit diesem kleinen Ausschnitt können Sie warten:
quelle
Sie können die
.delay()
Funktion verwenden.Das ist, wonach Sie suchen:
quelle
Das xml4jQuery-Plugin gibt die Sleep-Methode (ms, callback) an. Die verbleibende Kette würde nach der Schlafphase ausgeführt.
quelle
Verwenden Sie beispielsweise die Funktion setTimeout. Besuchen Sie hier zum Beispiel
quelle