Ich habe das Buch Jquery in Action und erwähnt diese drei Funktionen, wenn es darum geht, Konflikte mit anderen Bibliotheken zu lösen. Ich weiß jedoch nicht, was der Unterschied zwischen ihnen ist und verstehe die Erklärung des Buches nicht.
%Vor%Weiß jemand, was der Unterschied ist? Danke.
Wenn Sie eine vereinfachte Version verwenden, ist das vielleicht verständlicher. Die erste Ready-Funktion macht nicht viel mehr als Alarmierung. Die anderen beiden sind interessant.
Funktionen haben einen Gültigkeitsbereich, was bedeutet, dass wenn Sie eine Variable in einem verwenden, diese in der Hierarchie nach oben geht, bis sie gefunden wurde.
In Ihrer zweiten ready-Funktion wird die $
auf die Hi!
steigen, da es keine andere $
gibt, wenn Sie in der Funktion beginnen.
Im dritten Ready-Block wird% ce_de% jedoch nicht auf $
gesetzt, da die Definition näher ist - die als Argument übergebene ( Hi!
). Diese function($) {
wird die jQuery-Funktion sein (d. H. In dieser Funktion $
), da so die Bereitschaftsfunktion von jQuery implementiert wird.
Also:
%Vor% Jetzt geht es um Konflikte mit anderen Bibliotheken. Andere Bibliotheken (z. B. Prototyp) verwenden auch das $ == jQuery
-Symbol, da es eine bequeme Verknüpfung zum Aufrufen der Bibliothek darstellt. Wenn Sie die letzte bereitgestellte Funktion verwenden, können Sie sicher sein, dass $
sich auf jQuery bezieht, während jQuery sich selbst an diese Funktion übergibt (als erstes Argument).
In der zweiten ready-Funktion wurde $
möglicherweise auch auf Prototype gesetzt, und Sie sind nicht sicher, ob Sie jQuery mit $
aufrufen. In Ihrem Beispiel war es $
und nicht jQuery. Wenn es Prototyp ist, ist es das Gleiche. Überlegen Sie:
Auf der anderen Seite:
%Vor% Wenn Sie jQuery(function ($) { ...
eingeben, ist $ einfach ein Alias für das jQuery-Objekt. Sie könnten tatsächlich einen beliebigen Bezeichner anstelle von $ verwenden, und dies wäre immer noch ein Alias für das jQuery-Objekt.
Im zweiten Beispiel wird die Warnung "$ = Hi!" denn in diesem Fall zeigt das $ auf die var, die direkt über der Funktion deklariert ist.
Das dritte Beispiel maskiert effektiv das über der Funktion deklarierte $, weil $ in das jQuery-Objekt innerhalb der Funktion aufgelöst wird.
Ich hoffe, dass das für Sie Sinn macht.
Der erste Codeblock deklariert einen ready-Handler, der ausgeführt wird, sobald das DOM vollständig geladen wurde. Es erzeugt lediglich eine Alarmbox.
%Vor% Der zweite Codeblock deklariert ebenfalls einen ready-Handler, aber es zeigt einen Konflikt an. Die Variable $
wurde absichtlich auf einen String gesetzt (dies könnte aus einer in Konflikt stehenden js-Bibliothek kommen) und kann daher nicht als jQuery-Objekt verwendet werden. Im Rahmen der Handler-Funktion bleibt $
der Zeichenkette zugewiesen und die Warnung zeigt $ = Hi!
an.
Der dritte Codeblock deklariert ebenfalls einen ready-Handler, aber er deklariert einen lokalen $
-Parameter. Das jQuery-Objekt übergibt sich selbst als ersten Parameter an den ready-Handler.% Co_de% verweist also auf das jQuery-Objekt, und die Warnung druckt $
, wobei $ = ...
eine Repräsentation des jQuery-Objekts ist.
Tags und Links javascript jquery