Skip to content

JQuery中的$(​document).ready与window.onload有什么区别?

Posted on:2024年8月10日 at 17:06

定义

再说两者之前先简单说明一下window与document的区别:

$(document).ready()

从字面的意思上理解,就是文档准备好了,也就是浏览器已经加载并解析完整个html文档,DOM树已经建立起来了,然后执行此函数。

原生的JavaScript写法如下:

document.ready=function(){
 alert("ready");
}

jQuery中的写法如下:

$(document).ready(function(){
 alert("ready");
});
//或者简写为
$(function(){
 alert("ready");
});

$(window).load

在网页中所有元素(包括页面中图片、css文件等所有关联文件)完全加载到浏览器后才执行。

原生JavaScript中的写法如下

window.onload = function(){
 alert("onload");
};

jQuery中的写法如下:

$(window).load(function(){
 alert("onload");
});

ready与load执行顺序

先来看一下DOM文档加载的步骤:

    1.解析HTML结构
    2.加载外部脚本和样式表文件
    3.解析并执行脚本代码
    4.构造HTML DOM模型 //ready
    5.加载图片等外部文件
    6.页面加载完毕 //load

从上面的步骤中可以看出,ready在第4步完成之后就执行了,但是load要在第6步完成之后才执行。

两者区别

1.执行时间

以浏览器装载文档为例,在页面加载完毕后,浏览器会通过 Javascript为DOM元素添加事件。在常规的Javascript 代码中,通常使用 window.onload 方法,而在 Jquery 中,使用的是 $(document).ready() 方法。 $(document).ready()方法是事件模块中最重要一个函数,可以极大的提高 Web 应用程序的速度。

2.编写个数不同

示例如下:

以下代码无法正确执行,结果只输出第二个,:

$(window).load(function(){
    alert(“text1”);
});
$(window).load(function(){
    alert(“text2”);
});

$(document).ready()能同时编写多个,以下代码正确执行,结果两次都输出:

$(document).ready(function(){
    alert(“Hello World”);
});
$(document).ready(function(){
    alert(“Hello again”);
});

3.简化写法

4.执行的效率不同

原文转自:https://fe.ecool.fun/topic/c4442ea9-cfe9-4ed5-a82c-8adc2e4e5d55