Heim > Artikel > Web-Frontend > Eine effektive Möglichkeit, Jquery-Versionskonflikte zu lösen_jquery
Freunde, die jQuery verwendet haben, wissen, dass verschiedene Versionen von jQuery Konflikte verursachen können. Dieser Artikel schlägt wie folgt wirksame Lösungen für dieses Problem vor:
Fall: Lösen Sie den Konflikt zwischen jQuery 1.3.2 und 1.4.2. (Dieses Beispiel wurde getestet und bestanden!)
Schritt eins: Fügen Sie am Ende des 1.4.2-Quellcodes einen Satz hinzu:
var $j4 = jQuery.noConflict(true);
Der Grund, warum ich es hier im Quellcode hinzufüge, anstatt es bei Bedarf hinzuzufügen, wie in den meisten Artikeln erwähnt, liegt darin, dass viele Plug-Ins basierend auf 1.4.2 hinzugefügt werden müssen. Durch das Hinzufügen hier kann vermieden werden, dass zu viele hinzugefügt werden Plug-ins. Satzcode führt zu Duplikaten. 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 dieser tatsächlich diese beiden Sätze ausführt:
window.$=_$; window.jQuery=_jQuery;
Das Prinzip ist das gleiche wie bei window.$=_temp$ (Rückgabe des Namespace), 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 jQuery1.3.2 in den temporären Variablenraum ein:
window.$ = $j4;
Dieser Satz und der folgende Satz beziehen sich alle darauf, dass der mittlere Code jQuery und $ korrekt verwendet. 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. Selbst wenn wir ihn ändern, sollten wir ihn so wenig wie möglich ä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.
②. Weil 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 mit von anderen entwickelten Plug-Ins gibt . Verwenden Sie $ oder jQuery zum Referenzieren, es sei denn, es handelt sich nicht um ein Plug-In unter jQuery.
③. Um zu verhindern, dass das Plug-in window.$ und window.jQuery direkt verwendet, beziehen Sie sich auf 1.3.2 jQuery und $, obwohl diese Situation relativ selten ist, ist dies nur für den Fall der Fall.
Der ursprüngliche Code in der Mitte bleibt unverändert und der folgende Code wird am Ende hinzugefügt:
window.$ = _temp$;//将$的引用权限返还给jQuery1.3. window.jQuery = _tempjQuery;//将jQuery的引用权限返还给jQuery1.3.
Schritt 3: Wenn Sie in Zukunft die Auswahlfunktion basierend auf jQuery1.4.2 verwenden möchten, können Sie nur $j4(element) verwenden.
Zusammenfassung: Die bisher machbare 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);
Verwenden Sie einfach $j2(element) im dritten Schritt. Die Prinzipien sind die gleichen.
Ich glaube, dass das, was in diesem Artikel beschrieben wird, einen gewissen Referenzwert für die jQuery-Programmierung aller hat.