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

Eri*_*ric 71 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>
Run Code Online (Sandbox Code Playgroud)

但是,.ready()中的代码在initializeCode()之前执行; 是执行,所以我觉得很奇怪.现在我必须将我的代码放在.onload()方法中,并在initializeCode()之后; line,表示位于.ready()块内.

有人可以解释一下这个,因为我是jQuery的新手吗?

Tow*_*wer 128

注意:.load()&.unload()已被弃用


$(window).load();
Run Code Online (Sandbox Code Playgroud)

将在页面及其所有内容完成加载后执行.这意味着所有图像,CSS(以及由CSS定义的内容,如自定义字体和图像),脚本等都被加载.当您的浏览器的"停止" - 图标变为灰色时,会发生这种情况.这对于检测何时加载文档及其所有内容非常有用.

$(document).ready();
Run Code Online (Sandbox Code Playgroud)

另一方面,一旦Web浏览器能够运行JavaScript,就会触发这种情况,这在解析器完成DOM之后就会发生.如果您想尽快执行JavaScript,这非常有用.

$(window).unload();
Run Code Online (Sandbox Code Playgroud)

当您离开页面时,将触发此事件.这可能是刷新/ F5,按下上一页按钮,导航到另一个网站或关闭整个选项卡/窗口.

总而言之,ready()将在load()之前触发,而unload()将是最后一次触发.

  • `$(document).ready()`实际上一旦DOM被完全加载就会触发,所以你绝对可以处理你的处理程序中的所有DOM.如果您想尽快执行JavaScript,请将其放在标题中的`script`标记中,在任何事件处理程序之外.它将在加载和解析后立即执行,这可能在`$(document).ready()`之前发生. (10认同)

Dav*_*och 11

窗口加载将等待加载所有资源.

document ready等待文档初始化.

卸载好,等到文件正在卸载.

顺序是:文件准备好,窗口加载,...... ......窗口卸载.

除非您需要等待加载图像,否则始终使用文档就绪.

文件准备的简写:

$(function(){
    // yay!
});
Run Code Online (Sandbox Code Playgroud)

  • @Sarfraz ......什么?他在帖子中明确指出"ready()是在initializeCode()之前执行[d];" (4认同)

ljg*_*gww 6

如果同时使用"document.ready"变体,它们将按照外观顺序触发

$(function(){
    alert('shorthand document.ready');
});

//try changing places
$(document).ready(function(){
    alert('document.ready');
});
Run Code Online (Sandbox Code Playgroud)