【问题标题】:$(document).ready(function() VS $(function(){ [duplicate]$(document).ready(function() VS $(function(){ [重复]
【发布时间】:2011-04-01 12:10:04
【问题描述】:

可能重复:
what is difference of $(function(){ }); and $(document).ready(function() { }) ;?

$(document).ready(function(){})$(function(){}) 有什么区别 我应该写成$ 形式还是新的jQuery(document).ready(function(){ }) 方式?

如果我加载了 google api,google.setOnLoadCallback(function() { 是更好的方法吗?还是一样的?

我还看到人们使用$(function($){})

谁能帮帮我,我迷路了。当我不知道我写的代码时,我会烦我。我想我应该通读图书馆。都被定义为同一个东西吗?

【问题讨论】:

标签: javascript jquery jquery-ui


【解决方案1】:

这两种方式是等价的,我个人更喜欢第二种方式,$(function() {}); 只是一个shortcut 用于准备文档。

关于new jQuery(document)... 构造,您实际上不需要使用new 运算符,如果您不使用,jQuery 将在内部使用它。

ready 处理函数接收的参数是 jQuery 对象本身。

这在你必须在与其他库的兼容模式下运行 jQuery 时非常有用,例如:

jQuery(function ($) {
  // use $ here
});

回调中的 $ 参数将引用 jQuery 对象,在该函数之外它可能引用另一个库,如 PrototypeJS。

【讨论】:

  • 我认为他的意思是“新方式”JQuery(文档)......
  • 从 jQuery 3.0 开始,只推荐使用 $(function() {}) 语法;其他语法仍然有效,但已被弃用。见api.jquery.com/ready
【解决方案2】:
  • $(document).ready(function() {});
  • $(function() {});

这两个语句实际上是完全相同的。所以第二次调用只是第一次调用的捷径。

$ 符号再次只是jQuery 的快捷方式。如果您已将 jQuery 加载到您的网站中,则可以同时使用这两者。特别是如果您不加载其他 JS 库,这些库也可能使用 $ 符号。这将我们带到您提到的

(function($){
}(jQuery));

打电话。这里所做的是确保在您创建的函数表达式中,$ 符号引用了jQuery 对象。您正在调用该匿名函数(以​​ $ 作为参数)并传入 jQuery 对象。

【讨论】:

    【解决方案3】:

    我鼓励阅读一些对理解 jQuery(当然还有 javascript)非常有用的文章,这些文章解释了如何创建一个 jQuery 插件,但是阅读它你会理解一些基本和重要的东西,比如闭包女巫是这个的意思 (function($){}(jQuery));声明。

    http://www.authenticsociety.com/blog/jQueryPluginTutorial_Beginner

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 2017-02-07
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多