Heim >Web-Frontend >js-Tutorial >Wie löse ich Konflikte zwischen verschiedenen Versionen von JQuery?
Freunde, die jQuery verwendet haben, wissen alle, dass verschiedene Versionen von jQuery Konflikte verursachen können. Wie kann man also das Problem mit Versionskonflikten lösen? Der folgende Artikel stellt es Ihnen vor.
Fall: Lösen Sie den Konflikt zwischen jQuery 1.3.2 und 1.4.2. (Dieses Beispiel wurde getestet und bestanden!)
Schritt 1: Fügen Sie am Ende des Quellcodes von 1.4.2 einen Satz hinzu:
var $j4 = jQuery.noConflict(true);
Der Grund, warum er hier im Quellcode hinzugefügt wird, ist nicht die Verwendung als in den meisten Artikeln erwähnt Dies liegt daran, dass viele auf 1.4.2 basierende Plug-Ins hinzugefügt werden müssen. Durch das Hinzufügen dieses Codes an dieser Stelle können Duplikate vermieden werden, die durch das Hinzufügen dieses Codes zu zu vielen Plug-Ins verursacht werden. Dieser Satz gibt alle Referenzberechtigungen von jQuery und $ in 1.4.2 auf. Das heißt, Plug-Ins, die auf 1.4.2 basieren, können jQuery und $ nicht mehr verwenden. Geben Sie gleichzeitig $j4 einen neuen Namensraum. Beachten Sie, dass es sich um ein Attribut von window handelt. Wenn Sie sich den Quellcode von 1.4.2 ansehen, werden Sie feststellen, dass er tatsächlich diese beiden Sätze ausführt:
window.$=_$; window.jQuery=_jQuery;
Das Prinzip ist das gleiche wie bei window.$=_temp$ (gibt den Namespace zurück), aber die Benennung ist anders.
Schritt 2: Fügen Sie den folgenden Code zum Kopf aller Plug-Ins hinzu, die auf dem 1.4.2-Framework basieren:
var _temp$ = window.$,_tempjQuery = window.jQuery;
Fügen Sie $ und jQuery von jQuery 1.3.2 in den temporären Variablenraum ein:
window.$ = $j4;
Dieser Satz und Der folgende Satz soll es dem mittleren Code ermöglichen, jQuery und $ korrekt zu verwenden. Das folgende $j4 soll ihnen die richtige Referenz geben.
window.jQuery = $j4;
Es gibt drei Gründe, warum wir zuerst temporäre Variablen speichern müssen:
① Wir möchten nicht viel am Quellcode des jQuery-Plugins ändern Versuchen Sie, es so oft wie möglich zu ändern. Es ist auch eine gute Möglichkeit, geänderten Code am Anfang und am Ende hinzuzufügen, wobei der ursprüngliche Code in der Mitte unverändert bleibt.
② Da 1.4.2 die Kontrolle über jQuery und $ aufgegeben hat, der vorhandene Plug-In-Code sie jedoch als Referenz verwendet, da Plug-Ins keine Konflikte vorhersagen können, selbst wenn es Konflikte gibt, Plug-Ins, die von anderen entwickelt wurden muss $ oder jQuery zum Zitieren verwenden, es sei denn, es handelt sich nicht um ein Plugin unter jQuery.
③ Um zu verhindern, dass das Plug-in window.$ und window.jQuery direkt als Referenz verwendet, führt dies dazu, dass auf 1.3.2 jQuery und $ verwiesen wird Fall.
Der ursprüngliche Code in der Mitte bleibt unverändert und am Ende wird der folgende Code hinzugefügt:
window.$ = _temp$;//将$的引用权限返还给jQuery1.3. window.jQuery = _tempjQuery;//将jQuery的引用权限返还给jQuery1.3.
Schritt 3: Wenn Sie in Zukunft die auf jQuery1.4.2 basierende Auswahlfunktion verwenden möchten, können Sie nur $j4 verwenden (Element).
Zusammenfassung: Die bisher praktikable Lösung: jQuery1.4.2 gibt die Steuerberechtigungen von $ und jQuery vollständig auf. 1.3.2 Geben Sie die Kontrollrechte von $ auf, nicht jedoch die Rechte von jQuery. Tatsächlich kann jQuery auch aufgegeben werden, es muss jedoch der Alias $j3 angegeben werden. Am besten platzieren Sie den Prototyp hinter jQuery1.3.2, der die Steuerberechtigungen von $ erhält. Wenn Sie jQuery1.4.2 in Zukunft verwenden möchten, müssen Sie jedoch $j4 verwenden, um darauf zu verweisen. Aber auf diese Weise werden alle Konflikte gelöst, egal wie viele jQuery-Framework-Versionskonflikte es gibt. Was passiert, wenn jQuery 1.2 kommt? Sehen Sie sich die Ausführungsschritte von (2) an, aber der erste Schritt wird geändert in:
var $j2 = jQuery.noConflict(true);
Der dritte Schritt verwendet $j2 (Element). Die Prinzipien sind die gleichen.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmiervideos! !
Das obige ist der detaillierte Inhalt vonWie löse ich Konflikte zwischen verschiedenen Versionen von JQuery?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!