0

所以我有在我的网站正常工作的代码:

$("#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,但是我可以看到页面中的HTML行,内联id为usr.

这会导致问题,因为我需要从该页面加载数据才能使页面正常运行。但它变得更加陌生。我以为我会尝试一个普通的发布请求并获取数据并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

4

1 回答 1

9

这听起来很像您正在加载 Prototype 或 MooTools 或其他东西以及 jQuery,因此 Prototype/MooTools/whatever 正在接管该$符号。

如果这是正在发生的事情,并且您需要其他库,则可以使用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.

于 2012-12-04T17:26:02.133 回答