为什么我不能像$ .whatever()那样进行jQuery调用?

时间:2011-04-08 04:52:47

标签: jquery

我可能会在一个问题中证明我对jQuery知之甚少:

我今天编写了一些jQuery(1.4.4)代码(我认为)就像我之前编写的其他代码一样。在其中,我调用了$.ajax(arguments),它立即产生了错误

  

未被捕捉TypeError:无法调用ajax的方法undefined

当我将呼叫更改为jQuery.ajax(arguments)时,一切都很顺利。 .ajax()以外的方法同样受到影响。

怎么了 - 我以为这两个符号是等价的?我显然做错了什么/愚蠢/无知,但我只是没有看到它。当然有人可以解决这个问题吗?谢谢!

4 个答案:

答案 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