我可能会在一个问题中证明我对jQuery知之甚少:
我今天编写了一些jQuery(1.4.4)代码(我认为)就像我之前编写的其他代码一样。在其中,我调用了$.ajax(arguments)
,它立即产生了错误
未被捕捉
TypeError
:无法调用ajax
的方法undefined
当我将呼叫更改为jQuery.ajax(arguments)
时,一切都很顺利。 .ajax()
以外的方法同样受到影响。
怎么了 - 我以为这两个符号是等价的?我显然做错了什么/愚蠢/无知,但我只是没有看到它。当然有人可以解决这个问题吗?谢谢!
答案 0 :(得分:5)
您使用的是其他任何JS库吗?例如原型?
使用$
快捷方式运行jQuery代码最安全的方法就是这样
jQuery(function($){
// jQuery code here using $
});
这相当于
jQuery(document).ready(function($){
// jQuery code here using $
});
修改:要在文档就绪上下文之外运行代码,请参阅Alex's answer。
答案 1 :(得分:4)
可能是'$'已被其他代码用作变量或函数。原型库也使用'$'。
答案 2 :(得分:4)
除了其他建议之外,您可以将代码包装在这样的结构中......
(function($) {
// $ will point to jQuery here, guaranteed.
})(jQuery);
此函数自我调用(定义匿名函数,然后使用()
调用它),其中jQuery
成为匿名函数的第一个参数,即$
。这是一个方便的技巧。
答案 3 :(得分:3)
您很可能与名称$发生冲突。这通常是由于在页面上使用另一个库,该库也使用与变量名相同的字符。尝试使用jQuery noConflict。