jQuery document.ready vs自我调用匿名函数
这两者有什么区别?
-
$(document).ready(function(){ ... });
-
(function(){ ... })();
这两个函数是同时调用的吗? 我知道,当整个HTML页面由浏览器呈现时,document.ready将被触发,但第二个函数(自我调用匿名函数)是如何触发的。 它是否等待浏览器完成呈现页面,或者在遇到任何问题时调用它?
-
$(document).ready(function(){ ... });
或简称$(function(){...});
这个函数在
DOM is ready
时候被调用,这意味着你可以开始查询元素。.ready()
将在不同的浏览器上使用不同的方法来确保DOM真的准备就绪。 -
(function(){ ... })();
这只是一个函数,当浏览器正在解释你的
ecma-/javascript
时, 它会尽快调用它自己 。 因此,你不可能在这里成功地处理DOM elements
。
(function(){...})();
只要在Javascript中遇到就会被执行。
$(document).ready()
将在文档加载后执行。 $(function(){...});
是$(document).ready()
的快捷方式,并且完全一样。
-
$(document).ready(function() { ... });
只是将该函数绑定到文档的ready
事件,如您所说,当文档加载时,事件触发。 -
(function($) { ... })(jQuery);
实际上是一个Javascript构造,所有这段代码所做的就是将jQuery
对象作为parameter passing给function($)
,并运行该函数,因此在该函数中,$
总是指向jQuery
对象。 这可以帮助解决命名空间冲突等
因此#1在文档加载时执行,而#2立即运行, jQuery
对象名为$
作为简写。
在DOM被“构造”之后document.ready运行。 在构buildDOM之前,自调函数会立即运行 – 如果插入到<head>
。
当DOM(Document对象模型)准备好执行JavaScript代码时,下面的代码将被执行。
$(document).ready(function(){ // Write code here });
上面代码的简写是:
$(function(){ // write code here });
下面显示的代码是一个自调用的匿名JavaScript函数,只要浏览器解释它就会执行:
(function(){ //write code here })(); // It is the parenthesis here that call the function.
下面显示的jQuery自调用函数将全局jQuery对象作为parameter passing给function($)
。 这使$
可以在自调用函数中本地使用,而无需遍历全局范围的定义。 jQuery并不是唯一使用$
库,所以这可以减less潜在的命名冲突。
(function($){ //some code })(jQuery);