【问题标题】:CoffeeScript with jQuery, jQuery ($), and jQuery带有 jQ​​uery、jQuery ($) 和 jQuery 的 CoffeeScript
【发布时间】:2012-11-21 22:53:57
【问题描述】:

在带有jQuery的CoffeeScript中,下面的语句有什么不同吗?

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

【问题讨论】:

    标签: jquery coffeescript


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        所以给你一个简短的回答:你应该更喜欢 $ -> 除非你正在使用 noConflict

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-29
          • 1970-01-01
          • 2011-06-29
          • 2016-02-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多