非常奇怪的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
。