CoffeeScript与jQuery,jQuery($)和jQuery

时间:2012-08-22 18:58:45

标签: jquery coffeescript

在使用jQuery的CoffeeScript中,以下语句有什么不同吗?

jQuery ($) ->
jQuery ->
$ - >

3 个答案:

答案 0 :(得分:4)

第一个与其他两个不同,就像在纯JavaScript中一样。在那里,您使用全局名称“jQuery”为“DOM ready”事件注册事件处理程序,同时确保快捷方式$链接到jQuery。其他两种样式不会这样做 - 因此,在事件处理程序的本地范围内,$将具有它外面的任何值。

答案 1 :(得分:1)

重要的是要知道$(handler)$(document).ready(handler)相同。您问题中的所有三个语句基本上都是为jQuery.ready函数设置处理程序。

有了这个,jQuery会将一个变量传递给提供给ready函数的处理程序,该函数是jQuery对象。因此,在您的第一个示例中,您的处理程序正好利用此功能,并且(重新)将$设置为与jQuery相同。你的处理程序不需要接受jQuery传递的变量,这就是为什么你的两个其他处理程序不接受任何参数的原因。

当有另一个全局使用$的库(例如jQuery)时,通常只需要执行此操作。

答案 2 :(得分:1)

默认情况下,jQuery创建一个名为jQuery的全局对象和一个名为$的全局别名。也就是window.$ = window.jQuery。这就是为什么您可能会看到引用两者的不同文档。某些其他图书馆也喜欢使用$作为他们的名字。这就是jQuery提供noConflict mode的原因,它允许您将$重置为之前的值。

为了给你一个简短的答案:除非你正在使用 $ ->,否则你应该更喜欢 noConflict

这里,作为参考,是jQuery函数的官方文档,当它被赋予函数作为参数时:http://api.jquery.com/jQuery/#jQuery3