非常奇怪的jQuery错误

所以我的代码在我的网站上正常运行:

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

但是自从我在导航栏中更改了一些代码以来,jQuery的表现一直很奇怪。 第一个主要问题是这一行:

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

返回错误: object [global] has no method "width()"

这似乎并不重要,因为页面上的所有元素都运行了该错误(好像它仍然被执行,因为元素仍然被放置)…但是后来我来到实现第一行的页面代码,我遇到了以下错误:

 Cannot call method "load()" of null 

果然,我检查了控制台,$(“#usr”)返回null,但我可以在页面中看到内联id为usr的HTML行。

这会导致问题,因为我需要从该页面加载数据才能使页面正常运行。 但它变得更加奇怪。 我以为我会尝试一个普通的post请求并获取数据并使用document.getElementById("usr").innerHTML = ...作为替代,但我从这一行得到以下错误:

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

错误:

 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=='string'){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' 

jQuery到底发生了什么?

我从googleapis导入1.8.2

这听起来很像你正在加载Prototype或MooTools或者其他东西以及jQuery,所以Prototype / MooTools /无论是什么都接管了$符号。

如果这是正在发生的事情,并且您需要其他库,则可以使用jQuery.noConflict() 。 然后你可以使用符号jQuery而不是$来为你的jQuery做东西,或者你把所有的jQuery代码放到一个函数中,你传递给jQuery.noConflict并接受$作为参数,如下所示:

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

或者你可以自己做:

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

ready也将jQuery对象传递给函数,如果你已经ready