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"); });