Ich arbeite gerade an diesem Tutorial: Erste Schritte mit jQuery
Für die beiden folgenden Beispiele:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Beachten Sie, dass im ersten Beispiel $(this)
Text in jedes li
Element eingefügt wird . Im zweiten Beispiel verwenden wir this
direkt beim Zurücksetzen des Formulars.
$(this)
scheint viel häufiger verwendet zu werden als this
.
Ich vermute im ersten Beispiel, dass $()
jedes li
Element in ein jQuery-Objekt konvertiert wird, das die append()
Funktion versteht, während im zweiten Beispiel reset()
direkt auf dem Formular aufgerufen werden kann.
Grundsätzlich benötigen wir $()
spezielle jQuery-only-Funktionen.
Ist das richtig?
javascript
jquery
this
Kevin Wu
quelle
quelle
Antworten:
Ja, Sie benötigen nur,
$()
wenn Sie jQuery verwenden. Wenn Sie möchten, dass jQuery DOM-Aufgaben erledigt, denken Sie daran.Grundsätzlich verwandelt jQuery jedes Mal, wenn Sie eine Reihe von Elementen zurückerhalten, diese in ein jQuery-Objekt . Wenn Sie wissen, dass Sie nur ein Ergebnis haben, wird es im ersten Element sein.
Und so weiter...
quelle
$(this)[0]
über ,this
wenn sie immer die gleichen sind?$(this)[0]
Ich habe es nur verwendet, um das Konzept zu veranschaulichen. :) Ich benutze aber$("#myDiv")[0]
überdocument.getElementById("myDiv")
.$()
ist die jQuery-Konstruktorfunktion.this
ist eine Referenz auf das DOM-Element des Aufrufs.Im Grunde übergeben
$(this)
Sie in nur dasthis
in$()
als Parameter, damit Sie jQuery-Methoden und -Funktionen aufrufen können.quelle
Ja, Sie benötigen
$(this)
jQuery-Funktionen, aber wenn Sie auf grundlegende Javascript-Methoden des Elements zugreifen möchten, die jQuery nicht verwenden, können Sie einfach verwendenthis
.quelle
Bei der Verwendung
jQuery
wird empfohlen,$(this)
normalerweise zu verwenden . Aber wenn Sie den Unterschied kennen (Sie sollten ihn lernen und kennen), ist es manchmal bequemer und schneller, ihn nur zu verwendenthis
. Zum Beispiel:ist einfacher und reiner als
quelle
this
ist das Element,$(this)
ist das mit diesem Element erstellte jQuery-ObjektEin tieferer Blick
this
MDN ist in einem Ausführungskontext enthaltenDer Geltungsbereich bezieht sich auf den aktuellen Ausführungskontext ECMA . Um dies zu verstehen
this
, ist es wichtig zu verstehen, wie Ausführungskontexte in JavaScript funktionieren.Ausführungskontexte binden dies
Wenn die Steuerung in einen Ausführungskontext eintritt (Code wird in diesem Bereich ausgeführt), wird die Umgebung für Variablen eingerichtet (Lexikalische und Variablenumgebungen - im Wesentlichen wird ein Bereich für die Eingabe von Variablen eingerichtet, auf die bereits zugegriffen werden konnte, und ein Bereich für lokale Variablen gespeichert), und die Bindung von
this
erfolgt.jQuery bindet dies
Ausführungskontexte bilden einen logischen Stapel. Das Ergebnis ist, dass Kontexte, die sich tiefer im Stapel befinden, Zugriff auf vorherige Variablen haben, ihre Bindungen jedoch möglicherweise geändert wurden. Jedes Mal, wenn jQuery eine Rückruffunktion aufruft, ändert es diese Bindung mithilfe von
apply
MDN .Das Ergebnis des Aufrufs
apply
ist, dass sich innerhalb der jQuery-Rückruffunktionenthis
auf das aktuelle Element bezieht, das von der Rückruffunktion verwendet wird.Beispielsweise ermöglicht in
.each
die häufig verwendete Rückruffunktion.each(function(index,element){/*scope*/})
. In diesem Bereichthis == element
ist wahr.jQuery-Rückrufe verwenden die Apply-Funktion, um die aufgerufene Funktion an das aktuelle Element zu binden. Dieses Element stammt aus dem Elementarray des jQuery-Objekts. Jedes erstellte jQuery-Objekt enthält ein Array von Elementen, die mit der Selektor- jQuery-API übereinstimmen, mit der das jQuery-Objekt instanziiert wurde.
$(selector)
Ruft die jQuery-Funktion auf (denken Sie daran, dass dies$
ein Verweis aufjQuery
Code ist :)window.jQuery = window.$ = jQuery;
. Intern instanziiert die jQuery-Funktion ein Funktionsobjekt. Während es möglicherweise nicht sofort offensichtlich ist, verwendet es$()
internnew jQuery()
. Ein Teil der Konstruktion dieses jQuery-Objekts besteht darin, alle Übereinstimmungen des Selektors zu finden. Der Konstruktor akzeptiert auch HTML-Zeichenfolgen und -Elemente . Wenn Siethis
an den jQuery-Konstruktor übergeben, übergeben Sie das aktuelle Element für ein jQuery-Objekt, mit dem erstellt werden soll . Das jQuery-Objekt enthält dann eine Array-ähnliche Struktur der DOM-Elemente, die dem Selektor entsprechen (oder im Fall von nur dem einzelnen Elementthis
).Sobald das jQuery-Objekt erstellt wurde, wird die jQuery-API jetzt verfügbar gemacht. Wenn eine jQuery-API-Funktion aufgerufen wird, wird diese Array-ähnliche Struktur intern durchlaufen. Für jedes Element im Array wird die Rückruffunktion für die API aufgerufen, wobei die Rückruffunktionen
this
an das aktuelle Element gebunden werden . Dieser Aufruf ist im obigen Codeausschnitt zu sehen, in demobj
sich die Array-ähnliche Struktur befindet undi
der Iterator ist, der für die Position im Array des aktuellen Elements verwendet wird.quelle
Ja, mit
$(this)
haben Sie die jQuery-Funktionalität für das Objekt aktiviert. Durch die einfache Verwendungthis
verfügt es nur über generische Javascript-Funktionen.quelle
this
Verweisen Sie auf ein Javascript-Objekt,$(this)
das zur Kapselung mit jQuery verwendet wird.Beispiel =>
quelle