Les amis qui ont utilisé jQuery savent que différentes versions de jQuery peuvent provoquer des conflits. Cet article propose des solutions efficaces à ce problème comme suit :
Cas : Résoudre le conflit entre jQuery 1.3.2 et 1.4.2. (Cet exemple a été testé et réussi !)
Première étape : Ajoutez une phrase à la fin du code source 1.4.2 :
var $j4 = jQuery.noConflict(true);
La raison pour laquelle je l'ajoute ici dans le code source au lieu de l'ajouter lorsque cela est nécessaire comme le mentionnent la plupart des articles est que de nombreux plug-ins basés sur 1.4.2 doivent être ajoutés. L'ajouter ici peut éviter d'en ajouter trop. Les plug-ins. Le code de phrase conduit à la duplication. 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 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;
Placez les $ et jQuery de jQuery1.3.2 dans l'espace variable temporaire :
window.$ = $j4;
Cette phrase et la phrase ci-dessous sont toutes destinées au code du milieu permettant d'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 code source du plug-in jQuery. Il est préférable de ne pas le modifier, même si nous le modifions 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 la version 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 les plug-ins ne peuvent pas prédire les conflits, même s'il y a des conflits avec des plug-ins développés par d'autres. . Utilisez $ ou jQuery pour référencer, 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 à l'avenir, vous ne pouvez 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. Et 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);
Utilisez simplement $j2(element) dans la troisième étape. Les principes sont les mêmes.
Je crois que ce qui est décrit dans cet article a une certaine valeur de référence pour la programmation jQuery de chacun.