2009-08-05 13 views
3

Ich verwende $().each(), um einige Elemente durchzulaufen. Ich möchte sicherstellen, dass die Aktion, die nach diesem Skriptabschnitt folgt, nur ausgeführt wird, wenn each() abgeschlossen ist.jQuery each() und "auf Erfolg"?

Beispiel:

$('something').each(function() { 
    // do stuff to items 
}); 

// do something to one of these items 
$('item').etc 

Es scheint an dieser Stelle zu arbeiten, weil es eine wirklich grundlegende Aktion ist. Aber manchmal schlägt es fehl und es scheint, als ob der each() Teil immer noch beschäftigt ist, wodurch die Aktion des Folge-Skripts durch die Aktionen each() überschrieben wird.

Also ... ist das möglich? Oder ist Code unter der each() -Funktion immer nach der vorherige Code ausgeführt. Ich weiß, dass z.B. AJAX-Aufrufe haben eine "Erfolg" -Funktion, um zu erzwingen, dass Code nur ausgeführt wird, wenn die Elternaktion abgeschlossen ist. Ist das hier möglich/möglich? Ich habe versucht, so etwas wie die folgenden, aber das scheint nicht zu funktionieren:

$('something').each(function() { 
    // do stuff to items 
}, function() { 
    // do stuff when the each() part has completed 
});

Antwort

5

each nicht asynchron ist, so was kommt nach sollte ausführen danach und es gibt keine Unterstützung für einen Rückruf. Es hängt jedoch davon ab, was Sie tun, um Dinge zu tun, weil einige davon asynchron sein können - z. B. Animationen, Slide-Up/Down usw. - und diese Methoden unterstützen Callbacks.