JQ的ready()与window.onload()方法都是在文档加载完毕之后才会被触发的方法,但它们之间的区别也是很明显的。

1.区别与联系:

  $(document).ready() window.onload()
加载时机 网页DOM结构加载完毕即可执行 网页内容全部加载完毕(包括图片、表格)才可执行
执行次数 多次,N次都不会被覆盖 只能执行一次,如果多次,前面的会被覆盖
举例

以下代码正确执行:

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

结果两次都输出

以下代码无法正确执行:  

window.onload = function()  { alert(“text1”);}; 

window.onload = function()  { alert(“text2”);}; 

结果只输出第二个

简写 $(function(){}); 无

由于window.onload()是在文档内容全部加载完毕之后才执行,这包括图片与表格。如果页面存在较多的图片或者大的表格,加载需要大量时间,造成页面无响应,用户体验差。而jq的ready方法无需页面内容全部加载完毕,只需DOM节点加载完成即可。比如,知道页面某处有图片而无需等待它显示出来就可以为图片绑定点击事件。因此,不建议使用window.onload()。

2.ready()与window.onload()的使用:

这2个方法都会在页面加载完毕就会被触发,那么,什么情况下需要使用这些方法呢?下面以代码说明。

<head>
<meta charset="UTF-8">
<title>window.onload</title>
<style type="text/css">
#box{
width: 200px;
height: 200px;
background-color: red;
}
</style>
<script type="text/javascript">
//window.onload=function(){
document.getElementById("btn").onclick=function(){
document.getElementById("box").style.width="400px";
document.getElementById("box").style.height="400px";
}
//}
</script>
</head>
<body>
<input type="button" name="btn" id="btn" value="确认">
<div id="box"></div>
<p>一般情况下,页面从上往下、从左到右执行。运行到document.getElementById("btn")时
发现没有“btn”元素,报null错误</p>
</body>

上面的代码分别加上注释、去掉注释点击按钮运行2次,就可以看到结果。

这是因为一般情况下,页面从上往下、从左到右执行。运行到document.getElementById("btn")时, 发现没有“btn”元素,报null错误。

如果我们加上window.onload(),页面就会在加载完元素之后才会执行js绑定,不会报错。

当然,还有一种另外一种解决方法(通常建议这样做),就是将js代码放在最后,这样也就无需加上window.onload()方法。但这样代码结构稍显混乱。如下所示:

<head>
<meta charset="UTF-8">
<title>window.onload</title>
<style type="text/css">
#box{
width: 200px;
height: 200px;
background-color: red;
}
</style> </head>
<body>
<input type="button" name="btn" id="btn" value="确认">
<div id="box"></div>
<p>一般情况下,页面从上往下、从左到右执行。运行到document.getElementById("btn")时
发现没有“btn”元素,报null错误</p>
<script type="text/javascript">
document.getElementById("btn").onclick=function(){
document.getElementById("box").style.width="400px";
document.getElementById("box").style.height="400px";
}
</script>
</body>

JQ的ready()方法与window.onload()的区别与联系的更多相关文章

  1. $(document).ready(function(){}) 与 window.onload = function(){} 区别

    $(document).ready(fucntion(){ //在页面dom结构加载完毕后执行代码, }) window.onload = function(){ //页面所有内容加载完毕后,执行代码 ...

  2. $(document).ready()方法和window.onload()方法

    $(document).ready()方法和window.onload()方法 $(document).ready()方法是JQuery中的方法,他在DOM完全就需时就可以被调用,不必等待这些元素关联 ...

  3. jQuery中$(document).ready()和window.onload的区别?

    document.ready和document.load的区别?(JQ中的$(document).ready()和window.onload的区别?) window.onload,是采用DOM0级事件 ...

  4. 谈谈document.ready和window.onload的区别

    在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行 ...

  5. jQuery $(document).ready() 与window.onload的区别

    ps:jQuery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,虽然具有类似的效果,但是它们在触发操作的时间上存在着微妙的差异. 在j ...

  6. $(document).ready()方法和window.onload区别

    事件: javascript 和 HTML之间的交互式通过用户和浏览器操作页面时引发的事件来处理的.当文档或者它的某些元素发生某些变化和操作时,浏览器会自动生成一个事件:例如:当用户单击某个按钮时,也 ...

  7. [Javascript]jquery $(document).ready() 与window.onload的区别

    引用:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload ...

  8. 转载jquery $(document).ready() 与window.onload的区别

    jquery $(document).ready() 与window.onload的区别 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2009-12-28我要评论 Jquery中$ ...

  9. $(document).ready() 、 $('#id').load() 、window.onload 的区别

    今天做项目的时候遇到一个问题,结果死在了$(document).ready(). $('#id').load() .window.onload的区别上.然后,就整理一下,这三者的区别. 参考文章:ht ...

随机推荐

  1. ICO流程,casestudy

    https://medium.com/crypto-oracle/ico-analysis-framework-nex-case-study-bf65586b4b32

  2. 单例模式的N种写法

    单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧.但是其中的坑却不少,所以也常作为面试题来考.本文主要对几种单例写法的整理,并分析其优缺点.很多都是一些老生常谈的问题,但如果你不知道如何 ...

  3. code1225 搭积木

    题目分析:将当前层定义为第h层,共用了n块积木,本层积木数为m,f(h,n,m) 那么可以扩展数两种状态:f(h-1,n-m,m-1),f(h-1,n-m,m+1) 直接搜索可能的数据达到h^m,超时 ...

  4. spring 获取 WebApplicationContext的几种方法

    spring 获取 WebApplicationContext的几种方法 使用ContextLoader WebApplicationContext webApplicationContext = C ...

  5. mysql 添加字段,修改字段的用法

    1.添加字段 ALTER TABLE 表明 add 字段名称 类型(int,char,VARCHAR...) DEFAULT 默认值  位置(FIRST, AFTER+字段名称); 2.删除 ALTE ...

  6. NArrange 配置与使用

    1. 在VS中设置一下就可以用了 2.It is also recommended to setup a restore command using the same parameters, repl ...

  7. 总结- H5项目常见问题汇总及解决方案(转)

    H5项目常见问题及注意事项 Meta基础知识: H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 //一.HTML页面结构 <meta name="viewport" co ...

  8. 读取txt文件,并用其他格式显示

    这篇博客参照http://www.cnblogs.com/insus/archive/2013/08/08/3247078.html 题目是这样的: 一个txt文件,内容格式: 39.4% 2013- ...

  9. POJ 2546 Circular Area(两个圆相交的面积)

    题目链接 题意 : 给你两个圆的半径和圆心,让你求两个圆相交的面积大小. 思路 : 分三种情况讨论 假设半径小的圆为c1,半径大的圆为c2. c1的半径r1,圆心坐标(x1,y1).c2的半径r2,圆 ...

  10. .NET基础 (05)内存管理和垃圾回收

    内存管理和垃圾回收1 简述.NET中堆栈和堆的特点和差异2 执行string abc="aaa"+"bbb"+"ccc"共分配了多少内存3 ...