Variablen in einer setTimeout-Funktion (jQuery)

8

Ich versuche, eine jQuery-Anweisung innerhalb einer setTimeout-Funktion zu verwenden, aber Ich bekomme es nicht zur Arbeit. Ich habe viele Varianten ausprobiert, wie dieses hier (ich bin Verwenden von 'this', weil setTimeout innerhalb jeder Funktion ist und Der Selektor wird in einem Objekt zwischengespeichert / gespeichert, also der $ selector):

%Vor%

Wie muss ich das schreiben?

Danke!

    
north 04.11.2009, 12:59
quelle

4 Antworten

19

Wenn Sie das aktuelle this Element beim Aufruf von setTimeout beibehalten müssen, verwenden Sie diese Struktur: -

%Vor%

Dies erzeugt eine Schließung aus dem Ausführungskontext der äußeren Funktionen. Die äußere Funktion gibt eine innere Funktion zurück, die auf den Parameter self zugreifen kann. Es ist die innere Funktion, die aufgerufen wird, wenn die Zeitüberschreitung auftritt, aber der Wert von self behält den ursprünglichen this -Wert bei.

    
AnthonyWJones 04.11.2009 13:19
quelle
7

AnthonyWJones lieferte eine großartige Antwort, aber es gibt noch eine ähnliche, die etwas leichter zu schreiben und zu lesen ist. Sie speichern einfach den Wert von "this" in einer lokalen Variablen, dh.

%Vor%     
EMP 06.11.2009 00:10
quelle
1

Sie könnten wahrscheinlich so etwas tun, wenn die Variablen, die Sie verwenden möchten, in jedem Schritt der Schleife definiert sind.

%Vor%     
Marco 04.11.2009 13:02
quelle
0

Danke für Ihre Antworten.

Ich verwende jetzt eine Funktion innerhalb des setTimeout. Aber ich fand heraus, dass das eigentliche Problem an anderer Stelle liegt: In der each-Funktion versuche ich auf Objekteigenschaften zuzugreifen, die auf Eigenschaften innerhalb eines Konfigurationsobjekts verweisen, aber das Ergebnis (zB für dieses. $ Selector) ist "undefiniert" .

%Vor%

Nicht sicher, was das Problem ist. Beide Objekte haben die gleiche Funktion / Reichweite.

    
north 04.11.2009 13:35
quelle