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 相关文章推荐
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
Jul 10 Javascript
js 将线性数据转为树形的示例代码
May 28 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
Sep 20 Javascript
echarts实现折线图的拖拽效果
Dec 19 Javascript
vue-cli设置publicPath小记
Apr 14 Javascript
简单了解常用的JavaScript 库
Jul 16 Javascript
Element PageHeader页头的使用方法
Jul 26 Javascript
vue 解决provide和inject响应的问题
Nov 12 Javascript
使用PDF.js渲染canvas实现预览pdf的效果示例
Apr 17 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中使用Oracle数据库(1)
2006/10/09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
详解Django中的过滤器
2015/07/16 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python实现数据分析与建模
2019/07/11 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
英语演讲稿范文
2014/01/03 职场文书
继承公证书样本
2014/04/04 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python