Erreur jQuery très étrange

Donc, j’avais un code qui fonctionnait correctement sur mon site:

$("#usr").load("somepage.php",{var1:var1,var2:var2}); 

Mais depuis que j’ai changé un code dans la barre de navigation, jQuery a agi de manière très étrange. Le premier problème majeur était que cette ligne:

 var w = $(window).width(); 

renvoie l’erreur: l’ object [global] has no method "width()"

Et cela ne semblait pas avoir d’importance, car tous les éléments de la page fonctionnaient avec cette erreur (comme si elle était toujours en cours d’exécution, car des éléments étaient toujours placés) … mais je suis arrivé à la page qui implémentait la première ligne. de code, et j’ai rencontré l’erreur suivante:

 Cannot call method "load()" of null 

Effectivement, j’ai vérifié la console et $ (“# usr”) renvoie null, mais je peux voir la ligne HTML dans la page avec l’identifiant en ligne de usr .

Cela pose un problème car je dois charger les données de cette page pour que celle-ci fonctionne correctement. Mais cela devient encore plus étrange. Je pensais que je voudrais juste essayer une demande de publication simple et prendre les données et utiliser document.getElementById("usr").innerHTML = ... comme substitut, mais j’obtiens l’erreur suivante de cette ligne:

 $.post("somepage.php",{var1:var1,var2:var2},function(data){ document.getElementById("usr").innerHTML = data; }); 

Erreur:

 Uncaught TypeError: Object function $(el){if(!el)return null;if(el.htmlElement)return Garbage.collect(el);if([window,document].contains(el))return el;var type=$type(el);if(type=='ssortingng'){el=document.getElementById(el);type=(el)?'element':false}if(type!='element')return null;if(el.htmlElement)return Garbage.collect(el);if(['object','embed'].contains(el.tagName.toLowerCase()))return el;$extend(el,Element.prototype);el.htmlElement=function(){};return Garbage.collect(el)} has no method 'post' 

Qu’est-ce qui se passe avec jQuery?

J’importe 1.8.2 de googleapis

On dirait que vous chargez Prototype ou MooTools ou quelque chose comme jQuery, et donc Prototype / MooTools / tout ce qui prend en charge le symbole $ .

Si c’est ce qui se passe et que vous avez besoin de l’autre bibliothèque, vous pouvez utiliser jQuery.noConflict() . Ensuite, vous pouvez soit utiliser le symbole jQuery au lieu de $ pour vos éléments jQuery, soit vous mettez tout votre code jQuery dans une fonction que vous transmettez à jQuery.noConflict et acceptez $ comme argument, comme jQuery.noConflict :

 // Out here, $ !== jQuery jQuery.noConflict(function($) { // In here, $ === jQuery }); 

Ou vous pouvez simplement le faire vous-même:

 // Out here, $ !== jQuery jQuery.noConflict(); (function($) { // In here, $ === jQuery })(jQuery); 

ready passe également l’object jQuery dans la fonction, si vous utilisez déjà ready .