这些jQuery就绪函数有什么区别?

有什么区别

$(function(){ }); 

 $(document).ready(function() { }); 

什么也没有

这个函数的行为就像$(document).ready(),它应该被用来包装其他$()

你可以在源代码中看到这个:

 rootjQuery = jQuery(document); ... } else if ( jQuery.isFunction( selector ) ) { return rootjQuery.ready( selector ); } 
 } else if (jQuery.isFunction(selector)) { return rootjQuery.ready(selector); } 

从源头上

调用$(document).ready(selector)保存一些if语句。

尽pipejQuery在内部caching$(document) ,可能会使$(f)更快。

基准

两者都是等价的,第一个是速记forms。

$(function(){})是dom准备好的捷径

作为parameter passing给jQuery构造函数的函数绑定到文档就绪事件。

这两者完全相同:使用任何你喜欢的forms。

这就是说,我个人总是使用扩展的forms$(document).ready(function(){}); 原因很简单,代码在做什么是完全明显的。 大概的想法是“自我logging代码”。 任何稍后访问代码的人都会立即看到代码将在document ready事件上运行。 用简短的forms,你必须依靠你的代码的读者理解的意思。

我build议你阅读这个 。 如你看到的

以下所有三种语法都是等价的:

$(document).ready(handler)

$().ready(handler) (this is not recommended)

$(handler)

所以这取决于你和你喜欢的东西。

他们实际上是一样的。 没有不同。


这是本地的方式。

 $(document).ready(function() { // code }); 

这是以前的简写。

 $(function() { // code }); 

jQuery源代码

我们遇到了IE9不能在$(function(){})中运行函数的情况; 按照与$(document).ready(function(){})相同的方式或时间。

对于我们来说,这个问题是专门从查询string中读取信息,并在屏幕上处理和显示这些信息,或者使用它来处理表单的。 IE9会处理这些信息,一旦它被$(function(),和一个用户刷新页面caching,但第一次运行,没有任何工作的权利,但是,一旦我们从$(function(){});切换到$文件).ready(),这个问题是固定的,我们没有改变。

我很期待那一天我不必为IE9而testing更低的。

我使用$(function() {}); 因为它更短 据我所知,两种做法没有区别。