SLa*_*aks 56

什么都没有.

此函数的行为与$(document).ready()类似,因为它应该用于包装其他$()

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

rootjQuery = jQuery(document);

...

} else if ( jQuery.isFunction( selector ) ) {
    return rootjQuery.ready( selector );
}
Run Code Online (Sandbox Code Playgroud)

  • 有一点不同,$(function(){})的可读性较低(至少对我的大脑而言). (38认同)
  • 同意罗斯迪 - 一个人对于实际做的事情略微表达得多,一个稍微简洁一些.我更喜欢富有表现力的版本,认为它的性能稍差一点:http://jsperf.com/ready-callback-function-vs-document-ready-function/4 (3认同)

Ray*_*nos 16

} else if (jQuery.isFunction(selector)) {
    return rootjQuery.ready(selector);
}
Run Code Online (Sandbox Code Playgroud)

来自消息来源

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

虽然jQuery在$(document)内部缓存可能会$(f)更快.

基准

  • 如果我们正在谈论**级别的微优化,您可能需要考虑转移显式版本所需的额外11个字节... (3认同)

Bro*_*ass 10

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

  • 是的,他们是一样的. (3认同)

Ali*_*deh 7

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

作为参数传递给jQuery构造函数的函数绑定到document ready事件.


lon*_*day 7

这两者完全相同:使用您喜欢的任何形式.

也就是说,我个人总是使用扩展形式$(document).ready(function(){});,原因很简单,代码正在做什么是完全明显的.近似的想法是"自我记录代码".任何人来到后面的代码上会立即看到该代码是要在运行documentready事件.使用简写形式,您必须依赖代码的读者理解其含义.


fol*_*ira 6

我建议你读这个.如你看到的

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

$(document).ready(handler)

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

$(handler)

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

  • `$().ready()`在jQuery 1.4+中不起作用.在这些情况下,`$()`返回一个空选择而不是文档. (3认同)
  • @lonesomeday这就是为什么在它面前有一个**(这是不推荐的)**. (2认同)

Wil*_*nni 6

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

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

我非常期待不用测试 IE9 及更低版本的那一天。


nyu*_*a7h 5

它们实际上是相同的。没有不同。


这是本机的方式。

$(document).ready(function() {
    // code
});
Run Code Online (Sandbox Code Playgroud)

这是以前的简写。

$(function() {
    // code
});
Run Code Online (Sandbox Code Playgroud)

jQuery源代码