2011-04-08 60 views
3

一个问题,我可能会证明我对jQuery知道得有多少:

今天我正在编写一些jQuery(1.4.4)代码,我认为它就像我以前写过的其他代码一样。在这里面,我叫$.ajax(arguments),其及时产生的误差

未捕获TypeError:不能调用undefined

方法ajax当我改变调用jQuery.ajax(arguments),一切都很好。 .ajax()以外的方法同样受到影响。

发生了什么 - 我认为这两个符号是相同的?我显然做错了/愚蠢/无知,但我只是没有看到它。当然有人可以清楚这一点吗?谢谢!

+2

您是否在同一个项目中使用任何其他框架?有可能其他框架使用'$'运算符并导致冲突。 http://docs.jquery.com/Using_jQuery_with_Other_Libraries – jon3laze 2011-04-08 04:55:00

+0

你加载了jQuery javascipt吗? – 2011-04-08 04:59:56

+0

@Richard看起来'jQuery.ajax(...)'的作品,我会说这是给定的 – Phil 2011-04-08 05:00:50

回答

4

它可能是'$'已被其他代码用作变量或函数。原型库也使用'$'。

5

你在使用其他的JS库吗?原型例如?

最安全的方式使用$快捷键这样

jQuery(function($){ 
    // jQuery code here using $ 
}); 

这相当于

jQuery(document).ready(function($){ 
    // jQuery code here using $ 
}); 

编辑运行jQuery代码:对于文档准备上下文之外运行的代码,见Alex's answer

3

很可能你与名称$有冲突。这通常是由于在页面上使用另一个库,该库也使用相同的字符作为变量名。尝试使用jQuery noConflict

4

除了其他建议,你可以换你的代码在这样的结构...

(function($) { 

    // $ will point to jQuery here, guaranteed. 

})(jQuery); 

此功能自所调用(定义一个匿名函数,然后用()调用它),其中jQuery变匿名函数的第一个参数是$。这是一个方便的技巧。

+0

这也是[编写插件代码]的推荐方式(http://docs.jquery.com/Plugins/Authoring #Getting_Started) – Phil 2011-04-08 05:02:22

+0

(功能($){ // $将在此处指向jQuery,保证为 }(jQuery)); < - 请注意,如果你想通过jsLint.com测试,括号中的细微变化。 – 2011-04-22 16:16:19

相关问题