jQuery事件.load(),. has(),. unload()

时间:2010-04-21 13:03:45

标签: javascript jquery events dom

对于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的新手吗?

4 个答案:

答案 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。