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 ...

10voto

Justin Niessner Punkte 235353

$this ist nur eine lokale Kopie von this eingewickelt in jQuery.

Langfristig ist es besser, eine lokale Kopie zu behalten, als die this jedes Mal, wenn sie benötigt wird, ist viel effizienter.

10voto

Billy Moon Punkte 54553

$this = $(this) ist eine Möglichkeit, das jQuery-Objekt zwischenzuspeichern. Es ist teuer, die jQuery-Funktion jedes Mal auszuführen. Durch das Speichern der Ausgabe können Sie den Selektor immer wieder verwenden, ohne die jQuery-Funktion erneut aufrufen zu müssen.

10voto

Sudheer Kumar Punkte 463
 $this = $(this)

was bedeutet, dass Sie das aktuelle Objekt einer Variablen namens $this . Es handelt sich nicht um ein Schlüsselwort.

Es handelt sich lediglich um einen Variablennamen.

9voto

genesis Punkte 49257

Es füllt einfach $this variabel mit $(this) so müssen Sie nicht nach $(this) Element bei jedem Aufruf. Es hat eine bessere Leistung

var $this = $(this);

7voto

Jens Roland Punkte 26963

Es ist ganz einfach: $this = $(this) . Es ist nur eine Abkürzung, die im Bereich der inneren Funktion verwendet wird. Das Dollarzeichen ist in diesem Fall nur ein Zeichen, es bezieht sich nicht auf jQuery. Es hätte genauso gut heißen können _this o xthis El $ ist nur eine Erinnerung daran, was die Variable enthält.

Es mag sinnlos erscheinen, aber dadurch werden drei überflüssige Methodenaufrufe vermieden (die $() Funktion ist nicht frei), so dass sie dort höchstwahrscheinlich aus Leistungsgründen verwendet wird.

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