2

在带有 jQ​​uery 的 CoffeeScript 中,以下语句有什么不同吗?

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

3 回答 3

4

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

于 2012-08-22T19:03:48.213 回答
1

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

这样一来,jQuery 会将一个变量传递给提供给ready函数的处理程序,该函数是 jQuery 对象。因此,在您的第一个示例中,您的处理程序只是利用这一点并(重新)设置$为与jQuery. 您的处理程序不需要接受 jQuery 传递的变量,这就是为什么您的其他两个处理程序不接受任何参数是可以的。

$通常只有在有另一个使用全局的库(例如 jQuery )时才需要这样做。

于 2012-08-22T19:33:46.917 回答
1

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

所以给你一个简短的回答:除非 $ -> 使用 noConflict.

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

于 2012-08-22T20:16:32.630 回答