JQ中$(window).load和$(document).ready区别与执行顺序


Posted in Javascript onMarch 01, 2017

JQ中的$(document).ready()大家应该用的非常多,基本每个JS脚本中都有这个函数的出现有时甚至会出现多个,那么另一个加载函数$(window).load相对出现的次数就很少了,下面为大家介绍一下两者的区别与他们的执行顺序

一般情况下一个页面响应加载的基本顺序是:域名解析 -> 加载html -> 加载js和css -> 加载图片等其他信息
那么我们在编写JS脚本时什么情况下使用$(document).ready()又在什么情况下使用$(window).load呢,我们先来了解一下两者的功能

一、$(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");
});

两者的区别在于:

1.执行时间不同

$(document).ready()是在页面完成HTML的加载并建立了DOM树之后就开始执行,但这并不代表页面的所

有数据已经全部加载完成,一些大的图片有会在建立DOM树之后很长一段时间才行加载完成,而

$(window).load()就是整个页面已经加载完毕后才执行,包括图片等一些关联文件。

2.可以被执行的次数不同

$(document).ready()可以在JavaScript代码中出现多次,并且里面的函数或者代码都可以执行;而$(window).load()只能在JavaScript代码中出现一次,如果有多个$(window).load(),那么只有最后一个$(window).load()里面的函数或者代码才会执行,之前的$(window).load()都将被覆盖;

3.执行的效率不同

如要在dom的元素节点中添加onclick属性节点,这时用$(document).ready()就要比用$(window).load()的效率高;但是在某些时候还必须得用$(window).load()才行

总结一下就是:$(window).load()在$(document).ready之后执行,且页面中所有内容全部加载完成后才会执行,两者的使用时机一目了然,大家可以自行决定。

Javascript 相关文章推荐
得到文本框选中的文字,动态插入文字的js代码
Mar 07 Javascript
ExtJs中简单的登录界面制作方法
Aug 19 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
PHP实现本地图片上传和验证功能
Feb 27 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
微信小程序“摇一摇”的实例代码
Jul 20 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
Dec 19 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
Angular2库初探
Mar 01 #Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
Mar 01 #Javascript
JavaScript两个变量交换值的实现方法
Mar 01 #Javascript
js实现仿购物车加减效果
Mar 01 #Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 #Javascript
js实现拖拽功能
Mar 01 #Javascript
js实现下拉菜单效果
Mar 01 #Javascript
You might like
数据库查询记录php 多行多列显示
2009/08/15 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP常用数组函数介绍
2014/07/28 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
json的使用小结
2016/06/08 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
JS判断数组那点事
2017/10/10 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python中序列的修改、散列与切片详解
2017/08/27 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
树莓派升级python的具体步骤
2020/07/05 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
服务员岗位职责
2014/01/29 职场文书
小学生开学感言
2014/02/28 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
答谢词范文
2015/01/05 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python