对于jQuery事件,这只是一个简单的问题。在加载DOM时,.load(),. ready()和.unload()是否按顺序运行?当我看到jQuery文档时,答案似乎是肯定的。
<script type="text/javascript">
$(window).load(function () {
// run code
initializeCode();
});
$(document).ready(function() {
//run code that MUST be after initialize
});
$(window).unload(function() {
Cleanup();
});
</script>
然而,.ready()中的代码是在initializeCode()之前执行的;是执行,所以我觉得很奇怪。现在我必须将我的代码放在.onload()方法中,并在initializeCode()之后; line,表示位于.ready()块内。
有人可以向我解释一下这个,因为我是jQuery的新手吗?
答案 0 :(得分:127)
.load()
&amp; .unload()
已deprecated $(window).load();
将在页面及其所有内容完成加载后执行。这意味着所有图像,CSS(以及由CSS定义的内容,如自定义字体和图像),脚本等都被加载。当您的浏览器的“停止” - 图标变为灰色时,会发生这种情况。这对于检测文档及其所有内容的加载时非常有用。
$(document).ready();
另一方面,只要Web浏览器能够运行JavaScript,就会触发这一点,这在解析器完成DOM之后就会发生。如果您想尽快执行JavaScript,这非常有用。
$(window).unload();
当您离开页面时,将触发此事件。这可能是刷新/ F5,按下上一页按钮,导航到另一个网站或关闭整个选项卡/窗口。
总而言之,ready()将在load()之前触发,而unload()将是最后一次触发。
答案 1 :(得分:11)
窗口加载将等待加载所有资源。
document ready等待文档初始化。
卸载好,等到文档被卸载。
顺序是:文件准备好,窗口加载,...... ......窗口卸载。
始终使用文档准备,除非您需要等待加载图片。
准备好文件的简写:
$(function(){
// yay!
});
答案 2 :(得分:6)
如果同时使用“document.ready”变体,它们将按照外观的顺序触发
$(function(){
alert('shorthand document.ready');
});
//try changing places
$(document).ready(function(){
alert('document.ready');
});
答案 3 :(得分:0)
另外,我注意到.load和.ready之间还有一个区别。我打开一个子窗口,当子窗口打开时我正在执行一些工作。 .load仅在我打开窗口时第一次被调用,如果我不关闭窗口,那么.load将不再被调用。但是,无论是否关闭子窗口,每次都会调用.ready。