77 Stimmen

$this vs. $(this) in jQuery

Ich habe auf SO einige Diskussionen gesehen über $(this)$this in jQuery, und sie machen Sinn für mich. (Siehe Diskussion hier für ein Beispiel).

Aber was ist mit dem Schnipsel unten aus dem jQuery-Website-Plugin-Tutorial, der zeigt, wie die Verkettung funktioniert?

(function ($) {

    $.fn.lockDimensions = function (type) {

        return this.each(function () {

            var $this = $(this);

            if (!type || type == 'width') {
                $this.width($this.width());
            }

            if (!type || type == 'height') {
                $this.height($this.height());
            }

        });

    };
})(jQuery);

Was bedeutet $this oben darstellen? Gerade wenn ich denke, dass ich es herausgefunden habe ...

122voto

Joe Punkte 15499

$this ist nur eine gewöhnliche Variable. Die $ ist ein gültiges Zeichen in Variablennamen, also $this verhält sich genauso wie jeder andere nicht reservierte Variablenname. Es ist funktionell identisch mit dem Aufruf einer Variable JellyBean .

69voto

ThiefMaster Punkte 297146

Sie verwenden normalerweise var $this = $(this); um zu vermeiden, dass ein neues jQuery-Objekt öfter als nötig erstellt wird. Im Falle des nachstehenden Codes erstellen Sie nur ein Objekt anstelle von zwei/vier. Dies hat nichts mit der Verkettbarkeit zu tun.

Man könnte es auch so nennen that , $thi$ oder etwas anderes (verwenden Sie letzteres nicht, es ist hässlich :p) als $ ist nur ein einfaches Zeichen in JavaScript, genau wie a-z.

36voto

jondavidjohn Punkte 60651

this in Javascript (in der Regel) stellt einen Verweis auf das Objekt, das die aktuelle Funktion aufgerufen. Dieses Konzept ist etwas unscharf durch jQuery's Versuche, die Verwendung von this benutzerfreundlicher innerhalb ihrer .each() Schleifenkonstruktion.

außerhalb el .each() , this repräsentiert das jQuery-Objekt, das .lockDimensions wird aufgerufen durch.

dentro de el .each() stellt das aktuelle DOM-Objekt dar, das iteriert wird.

Der Zweck der Speicherung ist im Allgemeinen $(this) in einer lokalen Variable soll verhindern, dass Sie die jQuery-Funktion $() mehrere Male , Zwischenspeichern einer jQueryized this sollte die Effizienz erhöhen, wenn Sie es mehrmals verwenden müssen.

$ ist einfach ein gültiges Zeichen für einen Variablennamen und wird als erstes Zeichen eines Variablennamens verwendet in der Regel um dem Programmierer mitzuteilen, dass es sich bereits um ein jQuery-Objekt handelt (und die zugehörigen Methoden/Eigenschaften verfügbar sind).

Diese Frage hat eigentlich nichts mit der Verkettungsfähigkeit zu tun, aber um die Verkettungsfähigkeit zu erhalten, sollten Sie this so dass andere Funktionsaufrufe hinzugefügt werden können und die Bedeutung von this auch bei diesen Anrufen.

14voto

evan Punkte 4169

Haben Sie vielleicht diese Zeile übersehen:

var $this = $(this);

Aquí, $this ist einfach eine Variable, die den Wert von $(this) . Sie können es austauschbar verwenden mit $(this) mit dem Vorteil, dass Sie nicht immer wieder dieselbe Suche durchführen müssen.

12voto

Ned Batchelder Punkte 342778

$this ist einfach eine lokale Variable, die so benannt wurde, um Sie daran zu erinnern, dass $(this) . Es spart die Arbeit der Erstellung der jQuery-Version von this und Sie können sie mehrmals verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X