Für ein Projekt, an dem ich arbeite, muss jQuery auf den Webseiten der Kunden verwendet werden. Kunden fügen einen von uns bereitgestellten Codeabschnitt ein, der einige <script>
Elemente enthält, die ein Widget in einem erstellten <script>
Code erstellen <iframe>
. Wenn sie nicht bereits die neueste Version von jQuery verwenden, umfasst dies (höchstwahrscheinlich) auch eine <script>
für Googles gehostete Version von jQuery.
Das Problem ist, dass auf einigen Kunden möglicherweise bereits eine ältere Version von jQuery installiert ist. Während dies möglicherweise funktioniert, wenn es sich zumindest um eine relativ neue Version handelt, stützt sich unser Code auf einige kürzlich eingeführte Funktionen in der jQuery-Bibliothek, sodass es zwangsläufig Fälle gibt, in denen die jQuery-Version eines Kunden einfach zu alt ist. Wir können nicht verlangen, dass sie auf die neueste Version von jQuery aktualisieren.
Gibt es eine Möglichkeit, eine neuere Version von jQuery zu laden, die nur im Kontext unseres Codes verwendet wird und keinen Code auf der Kundenseite beeinträchtigt oder beeinflusst? Im Idealfall könnten wir das Vorhandensein von jQuery überprüfen, die Version erkennen und, wenn sie zu alt ist, die neueste Version laden, um sie für unseren Code zu verwenden.
Ich hatte die Idee, jQuery in eine <iframe>
Domäne des Kunden zu laden , die auch unsere enthält <script>
, was möglicherweise machbar erscheint, aber ich hoffe, dass es einen eleganteren Weg gibt, dies zu tun (ganz zu schweigen von den Leistungs- und Komplexitätseinbußen von extra <iframe>
s).
quelle
Antworten:
Ja, dies ist aufgrund des Nichtkonfliktmodus von jQuery möglich. http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/
Dann würden Sie stattdessen
$('#selector').function();
tunjQuery_1_3_2('#selector').function();
oderjQuery_1_1_3('#selector').function();
.quelle
(function($) { /*your code here*/ }(jquery_x_x_x));
Nachdem ich mir das angeschaut und ausprobiert hatte, stellte ich fest, dass nicht mehr als eine Instanz von jquery gleichzeitig ausgeführt werden konnte. Nachdem ich mich umgesehen hatte, stellte ich fest, dass dies genau das Richtige war und viel weniger Code war.
Dann musste ich nur noch das "j" nach dem "$" hinzufügen.
quelle
(function($){ })($j)
Entnommen von http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page :
$
undjQuery
gehört zu versionX.$
undjQuery
gehören zu versionY, plus_$
und_jQuery
gehören zu versionX.my_jQuery = jQuery.noConflict(true);
- jetzt$
undjQuery
gehören zu versionX_$
und_jQuery
sind wahrscheinlich null undmy_jQuery
sind versionY.quelle
Sie können so viele verschiedene jQuery-Versionen auf Ihrer Seite haben, wie Sie möchten.
Verwendung
jQuery.noConflict()
:DEMO | Quelle
quelle
Es ist möglich, die zweite Version von jQuery zu laden, sie zu verwenden und dann das Original wiederherzustellen oder die zweite Version beizubehalten, wenn zuvor keine jQuery geladen wurde. Hier ist ein Beispiel:
quelle
Ich möchte sagen, dass Sie immer die neuesten oder neuesten stabilen Versionen von jQuery verwenden müssen. Wenn Sie jedoch mit anderen Versionen arbeiten müssen, können Sie diese Version hinzufügen und die
$
in einen anderen Namen umbenennen . Zum BeispielSchauen Sie hier, wenn Sie etwas mit schreiben, erhalten
$
Sie die neueste Version. Aber wenn Sie etwas mit alt machen müssen, dann verwenden Sie einfach$oldjQuery
statt$
.Hier ist ein Beispiel
Demo
quelle
Absolut ja, das kannst du. Dieser Link enthält Details dazu, wie Sie dies erreichen können: https://api.jquery.com/jquery.noconflict/ .
quelle