非常奇怪的jQuery错误

时间:2012-12-04 17:23:54

标签: javascript jquery html ajax

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

$("#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

1 个答案:

答案 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对象传递给函数。