JS中的onload与jQuery中的ready区别

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区别

时间: 2024-12-26 16:14:55

JS中的onload与jQuery中的ready区别的相关文章

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

js中window.onload 与 jquery中$(document.ready())区别,验证代码如下(调换js代码和Jquer代码书写顺序测试,运行结果一样,因此与代码书写位置没关系): <html> <head> <script type='text/javascript' src='jquery-1.11.1.min.js'></script> <script type='text/javascript'> $(document).r

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

$(document).ready()是在DOM结构载入完后执行的,而window.onload是得在所有文件都加载完后执行的,注意区别,一个是DOM加载完,一个是所有文件加载完 耳听为虚,眼见为实.通过下面的实例可查看两者的异同(注意:aa.jpg最好是一张大容量图片) <html> <head> <script type='text/javascript' src='jquery-1.3.2.min.js'></script> <script ty

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

一.区别 window.onload是在DOM树加载完成之后(DOM树加载完不代表全部资源加载完,例如图片,音频和视频等还没加载)执行的. 在Jquery中$(function(){ })和$(document).ready(function(){ })的效果是一样,是在DOM树加载完成之后就会执行.所以$(document).ready(function(){ })是比window.onload要先执行的.那么JQuery中$(document).ready(function(){ })用原生

js中有window.onload和&lt;BODY&gt;中的onload属性同时存在时

情况一,window.onload指定的function是匿名的,则只执行后者,且动作是后者的动作.如: [html] view plain copy<html> <head> <script type="text/javascript"> alert('a'); window.onload=function(){ // alert('b'); } alert('c'); </script> </head> <body

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

HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义的属性来存储和操作数据,我们自定义的属性名字也千奇百怪,五花八门.我们可以通过原生的getAttribute()或jQuery中的.attr()来获取我们自定义的属性.但是前端技术在向着规范化前进.HTML5标准规定,自定义的属性都已data-*开头,这样就区分开了固有属性和自定义属性.HTML代码如下: <div id="testDiv" data-cname="张三" data-e

javaScript中的onclick与jquery中的click区别

来来来,先看一个例子: html部分,定义几个按钮 <div class="carousel-btn"> <button class="btn"></button> <button class="btn"></button> <button class="btn"></button> <button class="btn&quo

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

1.(function($) {-})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){-} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){-})(param) 这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){-})(jquery)则是一样的,之所以只在形参使用$,是为了不与其

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

1.(function($) {…})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){…}这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(function(arg){…})(param)这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲

比较javascript中的appendChild()和jquery中的append() 才知道什么叫jqery真牛

1 <!doctype html> 2 <html> 3 <head> 4 <!--声明当前页面编码集(中文编码<gbk,gb2312>,国际编码<utf-8>)--> 5 <meta http-equiv="Content-Type" content="text/html";charset="utf-8"> 6 7 <title>HTML模版<