Maison > Article > interface Web > Comment résoudre les conflits entre les différentes versions de jquery ?
Les amis qui ont utilisé jQuery savent que différentes versions de jQuery peuvent provoquer des conflits, alors comment résoudre le problème des conflits de versions ? L’article suivant vous le présentera.
Cas : Résoudre le conflit entre jQuery1.3.2 et 1.4.2. (Cet exemple a été testé et réussi !)
Première étape : Ajouter une phrase à la fin du code source de la 1.4.2 :
var $j4 = jQuery.noConflict(true);
La raison pour laquelle elle est ajoutée ici dans le le code source n'est pas comme la plupart. L'article mentionne son ajout lorsque cela est nécessaire, car de nombreux plug-ins basés sur 1.4.2 doivent être ajoutés. L'ajouter ici peut éviter la duplication causée par l'ajout de ce code à un trop grand nombre de plug-ins. . Cette phrase abandonne toutes les autorisations de référence de jQuery et $ dans 1.4.2. C'est-à-dire que les plug-ins basés sur 1.4.2 ne peuvent plus utiliser jQuery et $. En même temps, donnez un nouvel espace de noms à $j4. Notez qu'il s'agit d'un attribut de window. Si vous regardez le code source de la 1.4.2, vous constaterez qu'il exécute réellement ces deux phrases :
window.$=_$; window.jQuery=_jQuery;
Le principe est le même que window.$=_temp$ (renvoyant l'espace de noms), mais le la dénomination est différente.
Étape 2 : Ajoutez le code suivant en tête de tous les plug-ins basés sur le framework 1.4.2 :
var _temp$ = window.$,_tempjQuery = window.jQuery;
Mettez les $ et jQuery de jQuery1.3.2 dans l'espace variable temporaire :
window.$ = $j4;
Cette phrase et la phrase ci-dessous concernent toutes deux le code du milieu pour utiliser correctement jQuery et $. Le $j4 suivant sert à leur donner la référence correcte.
window.jQuery = $j4;
Il y a trois raisons pour lesquelles nous devons d'abord stocker les variables temporaires :
① Nous ne voulons pas modifier une grande quantité de sources du plug-in jQuery. Le mieux est de ne pas bouger. Même si vous le modifiez, essayez de le modifier le moins possible. C'est également un bon moyen d'ajouter du code modifié en tête et en queue, en laissant inchangé le code d'origine au milieu.
②. Parce que 1.4.2 a abandonné le contrôle de jQuery et $, mais le code du plug-in existant les utilise comme référence, car le plug-in ne peut pas prédire les conflits, même s'il y a des conflits développés par les autres Plugins doivent également être référencés avec $ ou jQuery, sauf s'il ne s'agit pas d'un plug-in sous jQuery.
③. Afin d'empêcher le plug-in d'utiliser directement window.$ et window.jQuery pour faire référence à 1.3.2 jQuery et $, bien que cette situation soit relativement rare, c'est juste au cas où.
Le code original au milieu reste inchangé, et le code suivant est ajouté à la fin :
window.$ = _temp$;//将$的引用权限返还给jQuery1.3. window.jQuery = _tempjQuery;//将jQuery的引用权限返还给jQuery1.3.
Étape 3 : Si vous souhaitez utiliser la fonction de sélection basée sur jQuery1.4.2 dans le à l'avenir, vous ne pourrez utiliser que $j4(element).
Résumé : La solution réalisable jusqu'à présent : jQuery1.4.2 abandonne complètement les autorisations de contrôle de $ et jQuery. 1.3.2 Abandonnez les droits de contrôle de $ mais pas les droits de jQuery En fait, jQuery peut également être abandonné, mais il faut lui donner l'alias $j3. Il est préférable de placer le prototype derrière jQuery1.3.2, qui obtient les autorisations de contrôle de $. C'est juste que si vous souhaitez utiliser jQuery1.4.2 à l'avenir, vous devez utiliser $j4 pour le référencer. Mais de cette façon, quel que soit le nombre de conflits de versions du framework jQuery, ils seront tous résolus. Que se passe-t-il si jQuery 1.2 arrive, reportez-vous aux étapes d'exécution de (2), mais la première étape est modifiée en :
var $j2 = jQuery.noConflict(true);
La troisième étape utilise $j2(element). Les principes sont les mêmes.
Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!