所以我的代码 在我的网站上正常运行:
$("#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行。
这会导致问题,因为我需要从该页面加载数据才能使页面正常运行。但它变得更加奇怪。我以为我会尝试一个简单的帖子请求并获取数据并使用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答案 0 :(得分:9)
这听起来很像很多,就像你正在加载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
, ready
也会将jQuery对象传递给函数。