这两者之间的区别是什么。
$(document).ready(function(){ ... });
(function(){ ... })();
这两个函数是同时调用的吗? 我知道,当整个 HTML 页面由浏览器呈现时,document.ready 将被触发,但是第二个函数(自我调用匿名函数)会怎么样呢。它是等待浏览器完成呈现页面,还是在遇到页面时调用它?
在“构造”DOM 之后运行 document.ready,自调用函数立即运行——如果在构造 DOM 之前插入到 <head>中的话。
<head>
一旦在 Javascript 中遇到 (function(){...})();,就会立即执行它。
(function(){...})();
加载文档后将执行 $(document).ready()。$(function(){...});是 $(document).ready()的一个快捷方式,它的作用与 $(document).ready()完全相同。
$(document).ready()
$(function(){...});
$(document).ready(function(){ ... }); 或短 $(function(){...});
这个函数在 DOM is ready时调用,这意味着,你可以从 疑问元素开始,例如。.ready()将在不同的浏览器上使用不同的方法来确保 DOM 真的准备好了。
DOM is ready
.ready()
这只不过是一个函数,当浏览器解释你的 ecma-/javascript时,就会自己出现尽快。因此,在这里成功执行 DOM elements的可能性非常小。
ecma-/javascript
DOM elements
$(document).ready(function() { ... });只是将该函数绑定到文档的 ready事件,因此,正如您所说的,当文档加载时,事件触发器。
$(document).ready(function() { ... });
ready
(function($) { ... })(jQuery);实际上是 Javascript 的一个构造,这段代码所做的就是将 jQuery对象作为参数传递给 function($)并运行函数,因此在该函数内部,$总是引用 jQuery对象。这可以帮助解决名称空间冲突等等。
(function($) { ... })(jQuery);
jQuery
function($)
$
因此,# 1在加载文档时执行,# 2立即运行,使用名为 $的 jQuery对象作为速记。
当 DOM (文档对象模型)准备好执行 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 对象作为参数传递 这使得 $能够在自我调用函数中本地使用,而不需要 遍历全局范围以获得定义。JQuery 不是唯一使用 $的库,因此 减少潜在的命名冲突。
(function($){ //some code })(jQuery);