Identifizieren Sie $ (this) in jQuery

8

Was ist der beste Weg um herauszufinden, was $(this) in jQuery derzeit entspricht?

Zum Beispiel ist alert(this); nicht viel Hilfe.

Der Grund, warum ich frage, ist, dass ein Stück Code derzeit nicht tut, was er tun soll, nachdem ich den Code in eine Funktion verschoben habe.

Der Auszug unten ist jetzt in einer Funktion und $ (dieses) scheint sich jetzt auf das DOMWindow zu beziehen.

%Vor%

Wie behalte ich es als $ (this) das ursprüngliche geklickte Element?

    
Craig Ward 06.01.2012, 10:28
quelle

4 Antworten

22
  

Was ist der beste Weg, herauszufinden, was $(this) in jQuery derzeit entspricht?

Indem Sie es in die Konsole Ihres bevorzugten JavaScript-Debugging-Tools (wie FireBug oder der Chrome-Entwickler-Toolbar zum Beispiel) einfügen:

%Vor%

, das ein umschlossenes jQuery-Objekt zurückgibt. Wenn Sie mehr über das native Objekt wissen möchten, das Sie verwenden könnten:

%Vor%

Wenn Sie JavaScript-Entwicklung machen, sollten Sie ein JavaScript-Debugging-Tool verwenden. alert ist kein solches Werkzeug.

Nachdem Sie Ihre Frage mit einer Codequelle aktualisiert haben, scheint es, dass Sie $(this) im globalen Bereich verwenden. Dann wird es sich auf das Objekt window beziehen. Wenn Sie möchten, dass es auf ein angeklicktes Element oder etwas verweist, müssen Sie zuerst das .click-Ereignis abonnieren:

%Vor%

oder wenn Sie diesen Code in einer separaten Funktion externalisieren möchten:

%Vor%

oder:

%Vor%     
Darin Dimitrov 06.01.2012, 10:29
quelle
1

Beim Verschieben von Code in eine Funktion ändert sich normalerweise der Umfang des Codes. Also bezieht sich "dies" nicht mehr auf das ursprüngliche Objekt, sondern auf ein neues (oder das globale "Fenster" -Objekt). Wenn Sie uns Ihren Code zeigen, können wir das Problem identifizieren.

    
devnull69 06.01.2012 10:34
quelle
0

Ich vermute, dass Sie so etwas tun:

%Vor%

In diesem Fall wird clickHandler im Fensterobjektkontext aufgerufen. Um den korrekten Kontext beizubehalten, ändern Sie einfach Ihren Code in:

%Vor%     
dfsq 06.01.2012 10:51
quelle
0

Wenn du überprüfen willst, was herumgereicht wird, kannst du entweder meine Version oder prinzhorns Version von jquerylog verwenden. Es sollte Ihnen helfen, Schritt für Schritt zu identifizieren, was passiert:

Ссылка / Ссылка

Für einen Anruf wie:

%Vor%

Sie erhalten eine Ausgabe wie diese (die das div in jedem Schritt identifiziert:

%Vor%     
fmsf 06.01.2012 13:00
quelle

Tags und Links