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. Swift 字典的经常用法

    /* * *要正确使用字典,也须要一些条件 * 1.字典键值对的键和值的类型必须明白,能够直接指定.也能够类似数组直接赋值由编译器自己主动识别 * 2,字典必需要初始化 * 3,键的类型必须是能够被哈 ...

  2. NAS是什么

    NAS是什么 简介 NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”.它是一种专用数据存储服务器. ...

  3. 各大CMS系统优缺点(2017)

    各大CMS系统优缺点(2017) 总结 WordPress之前用过,可能需要再完整的用一个才会比较了解. 从2015年各行业建站规模来看,还有一大批人想自己搭建网站,下面为大家盘点一下比较实用CMS系 ...

  4. CSS常用原子类base.css

    在写css文件时,一些常用的属性我们完全可以把它单独提出来,提高复用性,能增加开发效率,下面是一些网站推荐的常用原子类,也是零度逍遥常用的,规定了一些字体,内外边距和宽高属性,一般写在base.css ...

  5. Hadoop框架基础(五)

    ** Hadoop框架基础(五) 已经部署了Hadoop的完全分布式集群,我们知道NameNode节点的正常运行对于整个HDFS系统来说非常重要,如果NameNode宕掉了,那么整个HDFS就要整段垮 ...

  6. MySQL格式化日期参数

    MySQL格式化日期参数 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的天,数值(0-31) %f 微秒 %H 小时 (0 ...

  7. Android TabLayout添加自定义分割线并且可以修改分割线高度

    为TabLayout添加分割线,显示的效果如下(红框内部分): 分割线 首先添加个竖线xml名为layout_divider_vertical: LinearLayout linearLayout = ...

  8. c# static 常量

    1 关键字 static 修饰 类  字段 属性 方法 ,标记static的就不用创建类的实例调用了,直接通过类名点出来 2 用于变量前,表示每次重新使用该变量所在的方法,类或者自定义的类时,变量的值 ...

  9. session 存入 redis

    <?php header('content-type:text/html;charset=utf-8'); /* * 更改 session 存储位置及存储方式. */ ini_set('sess ...

  10. vue中使用console.log无效

    webpack开发环境下,在vue中使用console.log无效,一直以为webpack出了问题. 使用window.console.log()就能够顺利在浏览器控制台输出了. 以及 在axios请 ...