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 event事件在IE、FF兼容性问题
Jan 01 Javascript
使用jquery动态加载javascript以减少服务器压力
Oct 29 Javascript
jquery实现滑动图片自己测试的例子
Nov 05 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
Node.js获取前端ajax提交的request信息
Feb 20 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
Jul 10 Javascript
Typescript的三种运行方式(小结)
Sep 18 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
Jul 11 Javascript
Vue3新特性之在Composition API中使用CSS Modules
Jul 13 Javascript
深入了解Vue3模板编译原理
Nov 19 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
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程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
如何在PHP中进行身份认证
2006/10/09 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
Python实现的购物车功能示例
2018/02/11 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
python实现磁盘日志清理的示例
2020/11/05 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
悬挂训练绳:TRX
2017/12/14 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
高中化学教学反思
2014/01/13 职场文书
家长评语大全
2014/01/22 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
初中班长竞选稿
2015/11/20 职场文书
MySQL池化框架学习接池自定义
2022/07/23 MySQL