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

时间:2010-04-18 15:38:08

标签: jquery

之间有什么区别
$(function(){

}); 

$(document).ready(function() { 

});

9 个答案:

答案 0 :(得分:54)

Nothing whatsoever.

  

这个功能就像   $(document).ready(),因为它应该   用于包装其他$()

您可以在source code

中看到这一点
rootjQuery = jQuery(document);

...

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

答案 1 :(得分:15)

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

来自source

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

虽然jQuery在内部缓存$(document),但可能会使$(f)更快。

Benchmarked

答案 2 :(得分:9)

两者都是等价的,第一种是速记形式。

答案 3 :(得分:7)

$(function(){})是dom ready

的捷径

作为参数传递给jQuery构造函数的函数绑定到文档就绪事件。

答案 4 :(得分:7)

两者完全等效:使用您喜欢的任何形式。

那就是说,我个人总是使用扩展形式$(document).ready(function(){});,原因很简单,代码正在做什么是完全明显的。近似的想法是“自我记录代码”。稍后访问该代码的任何人都会立即看到代码将在document的{​​{1}}事件中运行。使用简写形式,您必须依赖代码的读者理解其含义。

答案 5 :(得分:6)

我建议你阅读this。如你所见

  

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

     

$(document).ready(handler)

     

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

     

$(handler)

所以这取决于你和你喜欢什么。

答案 6 :(得分:4)

他们实际上是一样的。没有区别。


这是本土方式。

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

这是以前的简写。

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

jQuery source code

答案 7 :(得分:4)

我们遇到过IE9不在$(function(){})中运行函数的情况;与$(document).ready(function(){});

的方式或时间相同

这个问题让我们专注于从查询字符串中读取信息并在屏幕上处理和显示该信息,或使用它来处理表单。 IE9将在用$(function()缓存后处理信息,并且用户刷新页面。但是在第一次运行时,没有任何工作正常。但是,一旦我们从$(function(){})切换到$(文件).ready(),问题已得到解决。我们改变了其他问题。

我非常期待有一天我无需测试IE9及更低版本。

答案 8 :(得分:2)

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