引用:http://www.jb51.net/article/21628.htm

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。

1.执行时间

window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
        $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。

2.编写个数不同

window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
         $(document).ready()可以同时编写多个,并且都可以得到执行

3.简化写法

window.onload没有简化写法
         $(document).ready(function(){})可以简写成$(function(){});

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

window.load  $(document).ready() 
执行时机  必须等待网页中所有的内容加载完毕后 ( 包括图片 ) 才能执行  网页中所有 DOM 结构绘制完毕后就执行,可以能 DOM 元素关联的内容并没有加载完 
编写个数  不能同时编写多个
以下代码无法正确执行:
window.onload = function(){
   alert(“text1”);
};
window.onload = function(){
   alert(“text2”);
};
结果只输出第二个  能同时编写多个
以下代码正确执行:
$(document).ready(function(){
   alert(“Hello World”);
});
$(document).ready(function(){
   alert(“Hello again”);
});
结果两次都输出 
简化写法  无  $(function(){
   // do something
});

另外,需要注意一点,由于在 $(document).ready() 方法内注册的事件,只要 DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的 html 下载完毕,并且已经解析为 DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用 Jquery 中另一个关于页面加载的方法 ---load() 方法。 Load() 方法会在元素的 onload 事件中绑定一个处理函数。如果处理函数绑定给 window 对象,则会在所有内容 ( 包括窗口、框架、对象和图像等 ) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。
Jquery 代码如下:
$(window).load(function (){
       // 编写代码 
});等价于 JavaScript 中的以下代码
Window.onload = function (){
     // 编写代码
}

——————————————————————————————

最近在改一个嵌入在frame中的页面的时候,使用了jquery做效果,而页面本身也绑定了onload事件。改完后,Firefox下测试正常流畅,IE下就要等个十几秒jquery的效果才出现,黄花菜都凉了。

  起初以为是和本身onload加载的方法冲突。网上普遍的说法是$(document).ready()是在页面DOM解析完成后执行,而 onload事件是在所有资源都准备完成之后才执行,也就是说$(document).ready()是要在onload之前执行的,尤其当页面图片较大 较多的时候,这个时间差可能更大。可是我这页面分明是图片都显示出来十几秒了,还不见jquery的效果出来。

  删了onload加载的方法试试,结果还是一样,看来没有必要把原本的onload事件绑定也改用$(document).ready()来 写。那是什么原因使得Firefox正常而IE就能呢?接着调试,发现IE下原来绑定的onload方法竟然先于$(document).ready() 的内容执行,而Firefox则是先执行$(document).ready()的内容,再执行原来的onload方法。这个和网上的说法似乎不完全一致 啊,呵呵,有点意思,好像越来越接近真相了。

  翻翻jquery的源码看看$(document).ready()是如何实现的吧:

复制代码 代码如下:
if ( jQuery.browser.msie && window == top ) (function(){
if (jQuery.isReady) return;
try {
document.documentElement.doScroll("left");
} catch( error ) {
      setTimeout( arguments.callee, 0 );
       return;
    }
   // and execute any waiting functions
   jQuery.ready();
})();
jQuery.event.add( window, "load", jQuery.ready );

结果很明了了,IE只有在页面不是嵌入frame中的情况下才和Firefox等一样,先执行$(document).ready()的内容,再执 行原来的onload方法。对于嵌入frame中的页面,也只是绑定在load事件上执行,所以自然是在原来的onload绑定的方法执行之后才轮到。而 这个页面中正好在测试环境下有一个访问不到的资源,那十几秒的延迟正是它放大出的时间差。

您可能感兴趣的文章:

  • jquery中的$(document).ready()使用小结
  • Jquery中"$(document).ready(function(){ })"函数的使用详解
  • JQuery的ready函数与JS的onload的区别详解
  • 模拟jQuery中的ready方法及实现按需加载css,js实例代码
  • jquery ready函数、css函数及text()使用示例
  • jquery ready(fn)事件使用介绍
  • JQuery onload、ready概念介绍及使用方法
  • jQuery之$(document).ready()使用介绍
  • jQuery 源码分析笔记(4) Ready函数
  • jQuery ready函数滥用分析
  • Jquery知识点一 Jquery的ready和Dom的onload的区别
  • jquery ready()的几种实现方法小结
  • jquery的$(document).ready()和onload的加载顺序
  • JQuery中的ready函数冲突的解决方法
  • 比Jquery的document.ready更快的方法
  • JQuery 引发两次$(document.ready)事件
  • JQuery下关于$.Ready()的分析
  • 提取jquery的ready()方法单独使用示例

转载于:https://www.cnblogs.com/jqmtony/p/3703457.html

[Javascript]jquery $(document).ready() 与window.onload的区别相关推荐

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

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

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

     $(document) ready()和window onload在表面上看都是页面加载时我们就去执行一个函数或动作,但是在具体的细节上$(document) ready()和window onlo ...

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

    参考资料: http://blog.csdn.net/lcc921528642/article/details/48379431 http://www.cnblogs.com/jiajia123/p/ ...

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

    $ (document).ready() 和 window.onload 在表面上看都是页面加载时我们就去执行一个函数或动作,但是在具体的执行上 $ (document) ready() 和 wind ...

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

    jQuery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 windo ...

  6. jquery 中 $(document).ready() 与window.onload 的区别

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 windo ...

  7. $(document).ready()和window.onload的区别

    来源于: The window.onload event fires when a document is completely downloaded to the browser. This mea ...

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

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 > ...

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

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

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

    1.执行时间: window.onload要等到页面所有元素加载完毕才执行,包括(图片.flash等) $(document).ready()在DOM结构绘制完毕后就执行,不必等到加载完毕. 2.执行 ...

最新文章

  1. 让GBDT和GNN结合起来:Criteo AI Lab提出全新架构BGNN
  2. python的pandas库内的函数_python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)...
  3. 3层b+树索引访问磁盘次数_【112期】面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解
  4. “12306”的架构到底有多6?
  5. Java日历打印_使用java 打印日历
  6. KDD Cup2020 正式开赛,天池诚邀各路豪杰来挑战!!
  7. android 布局 不同屏幕大小,如何创建支持不同屏幕尺寸的Android应用
  8. 6. 移动端Web开发调试之Chrome远程调试(Remote Debugging)
  9. 散粉在哪个步骤用_如何正确的使用散粉
  10. 一个IP到底值多少钱
  11. 花生壳配置代理域名访问内网API服务
  12. FPGA两片RAM的乒乓操作
  13. K8s 很难么?带你从头到尾捋一遍,不信你学不会
  14. Codeforces 1148D. Dirty Deeds Done Dirt Cheap
  15. python合并列表并按升序排序_程序合并间隔并在Python中按升序对其进行排序
  16. centos离线配置yun源
  17. 计算机网络逻辑类故障实例,逻辑故障计算机网络论文
  18. 《18岁,你读了大学~》
  19. 【假期层次晋升计划】四点共圆、托勒密定理——2014年6月25日
  20. 1办公自动化之批量提取文件名视频教程

热门文章

  1. linux shell awk -F‘:‘ ‘{print $1}‘
  2. matlab里rem怎么表示,matlab的rem()和mod()函数
  3. JavaSE基础——多态、抽象类、接口
  4. 基于SSM的NBA篮球球队运营系统
  5. zeal刷新不出来_热血传奇:计算怪物刷新时间,升级速度立马不同,老玩家笑出了声。...
  6. vue项目实战环境的搭建 -- 项目创建及连接github(gitee同理)
  7. Leader:这样的 Bug 你也写的出来???
  8. 【BZOJ3294】放棋子(动态规划,容斥,组合数学)
  9. 树形dp贪吃的九头龙(vijos1523)
  10. Java字符串首字母大写