this
das Element ist, ist das Objekt $(this)
jQuery mit diesem Element konstruiert
$(".class").each(function(){
//the iterations current html element
//the classic JavaScript API is exposed here (such as .innerHTML and .appendChild)
var HTMLElement = this;
//the current HTML element is passed to the jQuery constructor
//the jQuery API is exposed here (such as .html() and .append())
var jQueryObject = $(this);
});
einen tieferen Einblick
this
MDN ist in einem Ausführungskontext enthalten
Der Anwendungsbereich bezieht sich auf den aktuellen Execution ContextECMA. Um zu verstehen, this
, ist es wichtig zu verstehen, wie Ausführungskontexte in JavaScript funktionieren.
Ausführungskontexte binden diese
Wenn die Steuerung einen Kontext Ausführung tritt (Code wird in diesem Umfang ausgeführt wird) die Umgebung für die Variablen sind Setup (lexikalisch und Variable Environments - im Wesentlichen der für Variablen eine Fläche von bis Sets Geben Sie ein, welche bereits zugänglich waren und ein Bereich für lokale Variablen gespeichert werden soll, und die Bindung von this
tritt auf.
jQuery Anlegen gebunden
Ausführungskontexte einen logischen Stapel bilden. Das Ergebnis ist, dass Kontexte, die tiefer im Stapel liegen, Zugriff auf vorherige Variablen haben, ihre Bindungen jedoch möglicherweise geändert wurden. Jedes Mal, wenn jQuery eine Callback-Funktion aufruft, wird diese durch Verwendung von apply
MDN geändert.
callback.apply(obj[ i ])//where obj[i] is the current element
Das Ergebnis ist, dass apply
Aufruf Innenseite jQuery Rückruffunktionen, this
auf das aktuelle Element verweist durch die Callback-Funktion verwendet wird.
Zum Beispiel kann in .each
die häufig verwendete Callback-Funktion .each(function(index,element){/*scope*/})
. In diesem Bereich ist this == element
wahr.
jQuery-Callbacks verwenden die Funktion apply, um die aufgerufene Funktion mit dem aktuellen Element zu verknüpfen. Dieses Element stammt aus dem Elementarray des jQuery-Objekts. Jedes erstellte jQuery-Objekt enthält ein Array von Elementen, die mit dem selectorjQuery API übereinstimmen, das zum Instanziieren des jQuery-Objekts verwendet wurde.
$(selector)
ruft die jQuery-Funktion (nicht vergessen, dass $
ist ein Verweis auf jQuery
, Code: window.jQuery = window.$ = jQuery;
). Intern stellt die jQuery-Funktion ein Funktionsobjekt bereit. Auch wenn es nicht sofort offensichtlich ist, verwendet intern $()
new jQuery()
. Ein Teil der Konstruktion dieses jQuery-Objekts besteht darin, alle Übereinstimmungen des Selektors zu finden. Der Konstruktor akzeptiert auch HTML-Strings und Elemente. Wenn Sie this
an den jQuery-Konstruktor übergeben, übergeben Sie das aktuelle Element für ein zu erstellendes jQuery-Objekt mit. Das jQuery-Objekt enthält dann eine Array-ähnliche Struktur der DOM-Elemente, die mit dem Selektor übereinstimmen (oder nur das einzelne Element im Fall von this
).
Sobald das jQuery-Objekt erstellt wurde, wird die jQuery-API angezeigt. Wenn eine jQuery-API-Funktion aufgerufen wird, wird sie intern über diese Array-ähnliche Struktur iterieren. Für jedes Element im Array ruft es die Callback-Funktion für die API auf und bindet die Callbacks this
an das aktuelle Element. Dieser Aufruf ist im Code-Snippet oben zu sehen, wobei obj
die Array-ähnliche Struktur ist und i
der Iterator ist, der für die Position im Array des aktuellen Elements verwendet wird.
@Reigel, warum wurde das geschützt? Das OP befragte und erriet die richtige Antwort. – vol7ron
@Reigel: Ich denke, ich sollte das in Meta fragen, aber wenn das alles ist, was zum Schutz benötigt wird, sollten nicht alle Fragen * geschützt sein * – vol7ron