jquery错误无法调用方法'';空的

jquery错误无法调用方法'';空的,jquery,Jquery,我正在尝试实现此方法: 在我的网站上有一个粘性标题 我希望灰色菜单是粘性的,但我得到了错误: Uncaught TypeError: Cannot call method 'waypoint' of null 排队 $('.container').waypoint('sticky'); 页面上有一个包含容器类的div,因此它不应该为null 我不知道为什么,我唯一的猜测是,jquery 1.8.2和1.8.3之间存在差异,但是我可以同时运行这两个实例吗(粘性插件需要1.8.3,其余插件

我正在尝试实现此方法:

在我的网站上有一个粘性标题

我希望灰色菜单是粘性的,但我得到了错误:

Uncaught TypeError: Cannot call method 'waypoint' of null 
排队

$('.container').waypoint('sticky');
页面上有一个包含容器类的div,因此它不应该为null


我不知道为什么,我唯一的猜测是,jquery 1.8.2和1.8.3之间存在差异,但是我可以同时运行这两个实例吗(粘性插件需要1.8.3,其余插件需要1.8.2)

老了的一个好处是,当我看到您的错误消息时,我的第一个想法是“嗯……是
$()
函数真的是您所认为的吗?”:-)

您可以看到,jQuery的
$()
函数从未、从未返回
null
undefined
。如果您以该名称调用它,
jQuery()
。即使给它一个与任何元素都不匹配的选择器,它也会返回一个空的jQuery对象,就像
[]
,一个空数组而不是空数组

因此,获得此错误的唯一方法是:

无法调用null的方法“航路点”
在这一行代码中:

$('.container')。航路点('sticky');
如果
$
不是jQuery函数,则为。因为那个错误就是这么说的:您正试图调用
null.waypoint()
。唯一可能发生的方法是
$('.container')
调用返回
null

事实上是这样的:您正在加载jQuery和Prototype.js,在出现错误的地方,您正在调用Prototype版本的
$
函数

在这里,试试这个:打开开发者工具,在Chrome中加载你的页面。它应该在调用
.waypoint()
时停止

现在,按Esc键打开迷你控制台(或单击开发人员工具顶部的console选项卡),并在控制台中键入以下内容:

$
它将显示:

函数$(元素){
如果(arguments.length>1){
对于(var i=0,elements=[],length=arguments.length;i
现在键入以下内容:

jQuery
它将显示:

函数(e,t){返回新的v.fn.init(e,t,n)}
绝对不是相同的功能

或对于简单测试,键入:

$==jQuery
它会打印:

false
哎呀

要解决这个问题,您可能需要使用jQuery的
noConflict()
特性,这样您就可以同时使用jQuery和Prototype了。以下是一篇关于这个主题的优秀文章:

(谢谢您的参考!)


顺便说一句,jQuery的多个版本与此问题无关。但是,您真的需要同时加载1.8.2和1.8.3吗?导致兼容性问题的这两个版本之间的区别是什么?

如果没有以下链接,我可以告诉您这里的内容是什么**。航路点
不是您所认为的。请只使用一个jquery版本,最好是最新版本。如果需要,迁移需要它的插件:嗯。。。你要发布一些代码吗?编辑:需要更多的代码。当问题实际上在代码的其他地方时,我经常会在引用jquery库中的一行时出错。这些都是很难调试的。+1你是正确的!我发现这个链接对这件事很有帮助:谢谢你的指针-这是对
.noConflict()
和相关问题的一个很好的描述。