Un projet sur lequel je travaille nécessite l'utilisation de jQuery sur les pages Web des clients. Les clients insèreront un morceau de code que nous fournirons qui comprend quelques <script>
éléments qui construisent un widget dans un <script>
-created <iframe>
. S'ils n'utilisent pas déjà la dernière version de jQuery, cela inclura également (très probablement) un <script>
pour la version hébergée de Google de jQuery.
Le problème est que certains clients peuvent déjà avoir une ancienne version de jQuery installée. Bien que cela puisse fonctionner s'il s'agit au moins d'une version assez récente, notre code repose sur certaines fonctionnalités récemment introduites dans la bibliothèque jQuery, il y a donc forcément des cas où la version jQuery d'un client est tout simplement trop ancienne. Nous ne pouvons pas exiger qu'ils passent à la dernière version de jQuery.
Existe-t-il un moyen de charger une version plus récente de jQuery à utiliser uniquement dans le contexte de notre code, qui n'interférera pas ou n'affectera aucun code sur la page du client? Idéalement, nous pourrions peut-être vérifier la présence de jQuery, détecter la version, et si elle est trop ancienne, puis en quelque sorte charger la version la plus récente juste pour l'utiliser pour notre code.
J'ai eu l'idée de charger jQuery dans un <iframe>
domaine du client qui inclut également le nôtre <script>
, ce qui semble être possible, mais j'espère qu'il existe une manière plus élégante de le faire (sans parler des pénalités de performance et de complexité de extra <iframe>
s).
la source
Réponses:
Oui, c'est faisable grâce au mode noconflict de jQuery. http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/
Ensuite, au lieu de
$('#selector').function();
, vous feriezjQuery_1_3_2('#selector').function();
oujQuery_1_1_3('#selector').function();
.la source
(function($) { /*your code here*/ }(jquery_x_x_x));
Après avoir regardé cela et l'avoir essayé, j'ai constaté qu'il ne permettait en fait pas à plus d'une instance de jquery de s'exécuter à la fois. Après avoir cherché autour de moi, j'ai trouvé que cela faisait juste l'affaire et était beaucoup moins de code.
Alors, ajouter le "j" après le "$" était tout ce que j'avais à faire.
la source
(function($){ })($j)
Tiré de http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page :
$
etjQuery
appartient à la versionX.$
etjQuery
appartenez à versionY, plus_$
et_jQuery
appartenez à versionX.my_jQuery = jQuery.noConflict(true);
- maintenant$
etjQuery
appartiennent à la versionX,_$
et_jQuery
sont probablement nuls, etmy_jQuery
est la versionY.la source
Vous pouvez avoir autant de versions jQuery différentes sur votre page que vous le souhaitez.
Utilisation
jQuery.noConflict()
:DEMO | La source
la source
Il est possible de charger la deuxième version de jQuery, de l'utiliser, puis de restaurer l'original ou de conserver la deuxième version s'il n'y avait pas de jQuery chargé auparavant. Voici un exemple:
la source
Je voudrais dire que vous devez toujours utiliser les dernières versions stables ou récentes de jQuery. Cependant, si vous devez travailler avec d'autres versions, vous pouvez ajouter cette version et renommer le
$
à un autre nom. Par exempleRegardez ici si vous écrivez quelque chose en utilisant
$
alors vous obtiendrez la dernière version. Mais si vous avez besoin de faire quoi que ce soit avec l'ancien, utilisez-le à la$oldjQuery
place de$
.Voici un exemple
Démo
la source
Absolument, oui, vous le pouvez. Ce lien contient des détails sur la façon dont vous pouvez y parvenir: https://api.jquery.com/jquery.noconflict/ .
la source