$(document).ready(function() VS $(function() [重复]

Posted

技术标签:

【中文标题】$(document).ready(function() VS $(function() [重复]【英文标题】:$(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($))

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

【问题讨论】:

一模一样,***.com/questions/2662778/… 【参考方案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

【讨论】:

以上是关于$(document).ready(function() VS $(function() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

$(function) ready onload 等区别

在重新加载/刷新页面时,未调用dojo / ready函数

jQuery文档内部或外部的功能准备就绪

隐藏Flashdata消息

吸盘鱼褪色

jQuery 事件