jQuery的运行机制(onload与ready的差别)

结论得出前自行測试: 为了測试是否真如所说的那样,所以在页面插入了20000张照片,照片数量少得不出什么结论,所以改用console.log()来測试。这样一来我能够非常好的看出在页面最底端有没有都载入出来,还有是打印出的结果的事件顺序。

所用到的JS代码是:

console.time('name');
window.onload = function() {
console.log('onload2');
console.timeEnd('name');
}

一開始我是把console.timeEnd('name');放在onliad后面,onload是单独区分开,可是出现的问题是显示时间为0

所以找出原因是,onload在页面都运行完后,也就是标签以及图片都载入出来后才运行对应的JS代码,

执行測试后; onload在20000张照片的强大作用下耗时:30ms



Ready的測试:

所用到的JS代码是:

console.time('name');
console.time('name');
$(document).ready(function(){
console.log('ready1');console.timeEnd('name');
})

在执行ready的JQ代码时,Ready是在页面还未都载入完毕就显示结果了,且时间是20ms

在測试时候我增加了两个onload,这时候,还有增加两个ready做測试,

window.onload = function() {
console.log('onload1');
}
window.onload = function() {
console.log('onload2');
}

console.time('name');
$(document).ready(function(){
console.log('ready1');
})
console.time('name');
$(document).ready(function(){
console.log('ready2');
})

显示执行结果是:

能够看出,在基于前面的总结情况下,ready比onload先行输出结果,也就是运行的机制不同。再来看,onload2输出。onload1却没有输出,能够看出,在编写个数显示出来的时候。ready支持编写多个个数。并且是依照顺序输出的,而onload仅仅支持一个,后者优先级高选择后者。

总结:

① 运行时机:

onload:在整个document文档(包含了载入图片等其它信息)载入完毕后就能够直接对dom进行操作,比方一张图片要等这个图标载入完毕之后才干设置图片的宽高的属性或样式等。

ready :是在dom载入完毕后就能够直接对dom进行操作,比方一张图片仅仅要<img>标签完毕,不用等这个图片载入完毕,就能够设置图片的宽高的属性或样式等;

② 编写个数:

<script>

     window.onload = function() {

          alert(1);

     }

     window.onload = function() {       // 仅仅弹出11

          alert(11);

     }

     $(document).ready(function() {    // 依照顺序弹出 2  22 

          alert(2);

     });     

     $(document).ready(function() {

          alert(22);

     });     

  </script>



执行结果:弹出顺序:  2--->22--->11

③ 简写

Window.onload 没有简写形式

$(document).ready() 能够简写成$()

$()  ===   $(document).ready


 $(document).ready(function(){ alert(2);
  
 });


等价于:

 $(function(){ alert(2);

   })

JS中的onload与jQuery中的ready差别的更多相关文章

  1. js中window.onload 与 jquery中$(document.ready()) 測试

    js中window.onload 与 jquery中$(document.ready())差别,验证代码例如以下(调换js代码和Jquer代码书写顺序測试.执行结果一样.因此与代码书写位置没关系): ...

  2. JS的window.onload与JQuery的$(document).ready(function(){})的区别

    前段时间去面试被问及JS的加载(onload)与jQuery中加载(ready)方法的区别,瞬时懵逼了,关于这个知识点平时还真没怎么注意. 最近先来无事便查了一下资料, onload 事件(W3c上给 ...

  3. HTML5中的data-*属性和jQuery中的.data()方法使用

    原文地址链接:http://blog.csdn.net/fly_zxy/article/details/50687691: HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义 ...

  4. window.onload和JQuery中$(function(){})的区别即其实现原理

    一.区别 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. 在Jquery中$(function(){ })和$(document).ready(function(){ ...

  5. css中:not()选择器和jQuery中.not()方法

    因为老是将这两个的not方法弄混,所以写一下备忘. css中:not()选择器用法 :not 伪类选择器可以筛选不符合表达式的元素,:not(selector) 其中的selector为css选择器 ...

  6. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解

    1.(function($) {…})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...

  7. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解 ----转载

    1.(function($) {-})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){-} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...

  8. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详解

    1.(function($) {…})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...

  9. js中onload和jQuery中的ready区别

    window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. ------>不能写多个(如果有多个,只会执行一个) $(document).ready()是DOM结构绘制完毕后 ...

随机推荐

  1. 转一篇100offer的采访~35岁程序员是一种什么状态

    随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论.很多程序员在工作5-10年以后,都会开始思考5年.10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛弃. 特别是全民 ...

  2. [Atcoder Grand 006 C] Rabbit Exercise 解题报告 (期望)

    题目链接:https://www.luogu.org/problemnew/show/AT2164 https://agc006.contest.atcoder.jp/tasks/agc006_c 题 ...

  3. border:none与border:0的区别

    border:none与border:0的区别体现为两点:一是理论上的性能差异,二是浏览器兼容性的差异. 性能差异: [border:0;]把border设为“0”像素效果等于border-width ...

  4. SpringMVC后台使用对象接受参数字符串转日期

    在springMVC配置文件中加入: <bean id="dateConvert" class="com.iomp.util.DateConvert"/& ...

  5. css inline-block列表布局

    一.使用inline-block布局 二.多列布局方法二 <html><head> <meta charset="utf-8"> <tit ...

  6. Ubuntu 18.04 安装 Broadcom Limited BCM43142无线网卡驱动

    系统默认没有集成 BCM43142无线网卡驱动可以通过下面的方法安装--------------------------------------------------------------root ...

  7. zabbix2.4.5安装zatree插件

    一.关于zatree zatree 是来自国内58公司开发的监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序. 项目地址:https: ...

  8. js利用点击事件做一个简单的计算器

    先放一个样式图: 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  9. Unity调用Android的两种方式:其一、调用jar包

    unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...

  10. 题解 P1179 【数字统计】

    嚯嚯嚯,这道题很显然是削弱版的51nod P1042. 那么显然我们需要使用数位DP解题. 思路大致是这样的: 对于每一个数字,考虑三种影响关系: 1. 它对低位的影响 2. 它对高位的影响 3. 高 ...