jQuery的ready()方法的快捷方式

我已经看到了ready()方法的一些快捷方式,并想知道哪些实际发生,因为我的testing结果混淆了我..

$(document).ready(function(){ alert("document ready"); }); $(window).load(function(){ alert("window ready"); }); (function($){ alert("self invoke"); })(jQuery); 

这里自调用首先发生,然后是文档,然后是窗口。 自调用技术是否被认为是ready()方法?

第三个选项不是.ready() (或者真正相关的jQuery .ready()的快捷方式,自调用立即运行(只要它出现在代码中), 可能是您想到的快捷方式:

 $(function(){ alert("I'm a ready shortcut"); }); 

将函数传递给$(func)$(document).ready(func);的快捷方式$(document).ready(func); 。 不冲突的版本将如下所示:

 jQuery(function($) { //$ is jQuery }); 

尼克·克雷弗(Nick Craver)对他所说的话是正确的,但我认为值得注意的是,在最后一个例子中,它实际上并没有对jQuery做任何事情。 jQuery被作为parameter passing给匿名函数,但函数没有做任何事情。

最后一个例子相当于:

 (function(){ alert("self invoke"); })(); 

显然,这只是在该行代码被打中时立即调用匿名函数,从而执行警报。 它根本就没有调用jQuery,这就是为什么Nick说他完全不是ready()方法的原因。

本文对前两者的不同之处有一个很好的解释:

$(document).ready vs. $(window).load

jQuery提供了两个强大的方法来执行代码和附加事件处理程序: $(document).ready$(window).load 。 即使所有graphics尚未加载,文档就绪事件在加载HTML文档并准备好DOM时仍然执行。 如果您想在窗口加载之前将某些元素的事件连接起来,那么$(document).ready就是正确的地方。

 $(document).ready(function() { // executes when HTML-Document is loaded and DOM is ready alert("document is ready"); }); 

窗口加载事件稍后会在完整加载完整页面后执行,包括所有框架,对象和图像。 因此,涉及图像或其他页面内容的function应放置在窗口或内容标签自身的加载事件中。

 $(window).load(function() { // executes when complete page is fully loaded, // including all frames, objects and images alert("window is loaded"); });