Comment être un expert jQuery no.conflict?

Comment être un expert jQuery no.conflict?

Je suis principalement confronté à des erreurs de conflit jQuery avec Prototypes JS. Et je ne suis pas un expert de jquery.

Puis-je résoudre tous les problèmes de conflit. Comment obtenir des expertises pour résoudre les problèmes de conflit.

Comment savoir le code complet est jquery. Que faire si un javascript simple et un code jquery sont mélangés dans un fichier js?

Que se passe-t-il si le code externe js commence directement à partir de

var opbox=""; 

C'est l'ordre source que je ne peux pas changer

1

 <script type="text/javascript" src="jquery.min.js"></script> 

2
Je souhaite supprimer l'erreur de conflit de example.js

 <script type="text/javascript" src="example.js"></script> 

3

 <script type="text/javascript" src="Prototype.js"></script> 

4

 <script type="text/javascript" src="scriptaculous.js ></script> 

Le problème est que si vous souhaitez utiliser Prototype sur la page, $ doit être Prototype's $ , pas jQuery's. Puisque $ est juste un alias pour jQuery toute façon, jQuery fournit la fonction noConflict comme un moyen de dire à jQuery de renvoyer le contrôle de $ back à tout ce qu'il avait avant que jQuery ne soit chargé.

Cela signifie que chaque fois que vous pourriez utiliser $ , vous utiliserez jQuery place, par exemple:

 $('.foo').hide(); // Hide all elements with class "foo" 

devient

 jQuery('.foo').hide(); // Hide all elements with class "foo" 

Si vous utilisez des scripts externes, et si vous utilisez $ , vous devez les modifier. L'une des façons est de faire une recherche-et-remplacer et de modifier tous les ( $ ) appropriés pour jQuery .

Une autre façon est de mettre cela juste après votre tag de script, y compris jQuery:

 <script type='text/javascript'>jQuery.noConflict();</script> 

… puis ajoutez ceci en haut du script externe:

 (function($) { 

… et ceci au bas de celui-ci:

 })(jQuery); 

(Oui, cela signifie que vous devez modifier les scripts externes.)

Ce que cela fait, c'est de mettre l'intégralité du script externe dans une fonction, dans laquelle le symbole $ est résolu à jQuery plutôt que à Prototype $ , car $ est un argument pour cette fonction et donc il a priorité. Cependant, cette technique échouera avec certains scripts. S'ils s'attendent à ce que leurs déclarations de fonction se produisent à l'échelle mondiale (p. Ex., Devenez des propriétés de l'objet de window ), alors le script entier dans une fonction va rompre cela. Dans ces cas, vous devez exporter manuellement ces fonctions en les affectant à la window ou utiliser l'option de recherche et remplacement globale ci-dessus.

Il y a des exemples de ceci sur la page jQuery noConflict , bien qu'ils combinent souvent ce qui précède avec la fonction noConflict , ce qui pourrait être un peu déroutant.

Notez le point sur les conflits entre les frameworks qui ne se limitent pas seulement au symbole $ . Si vous pouvez éventuellement utiliser un seul cadre, faites-le.

Au lieu d'utiliser le raccourci $ , appelez jQuery.noConflict() et utilisez l'objet jQuery() pleine longueur lors de l'utilisation de la fonctionnalité jQuery.

Par exemple:

 <script> $(document).ready(function(){ // Do some DOM manipulation here }); </scipt> 

Deviendrait:

 <script> jQuery.noConflict(); jQuery(document).ready(function(){ // Do some DOM manipulation here }); </script> 

Pourquoi ne pas simplement faire

 <script> jQuery.noConflict(); (function($){ $(function(){ alert('code here'); }); })(jQuery); </script>