这些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() {});
因为它更短 据我所知,两种做法没有区别。