JQuery下关于$.Ready()的分析


Posted in Javascript onDecember 13, 2009

$(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法
接触JQuery一般最先学到的是何时启动事件。在曾经很长一段时间里,在页面载入后引发的事件都被加载在”Body”的Onload事件里.

对于Body的Onload事件和JQuery的Ready方法相比,有很多弊端.比如:

1.加载多个函数的问题
<body onload="a();b();">
</body>

在Onload事件中只能这样加载,很丑陋…而在JQuery中你可以利用多个JQuery.Ready()方法,它们会按次序依次执行

2.代码和内容不分离
这个貌似不用说了,让人深恶痛绝-.-!!

3.执行先后顺序不同
对于Body.Onload事件,是在加载完所有页面内容才会触发,我的意思是所有内容,包括图片,flash等.如果页面的这些内容很多会让用户等待很长时间.

而对于$(document).ready()方法,这个方法只是在页面所有的DOM加载完毕后就会触发,无疑很大的加快了网页的速度.

但是对于一些特殊应用,比如图片的放大缩小,图片的剪裁。需要网页所有的内容加载完毕后才执行的呢?我推荐使用$(window).load()方法,这个方法会等到页面所有内容加载完毕后才会触发,并且同时又没有OnLoad事件的弊端.

<script type="text/javascript"> 
$(window).load(function() { 
alert("hello"); 
}); 
$(window).load(function() { 
alert("hello again"); 
}); 
</script>

上面的代码会在页面所有内容加载完成后按先后顺序依次执行.

当然不要忘了与之对应的Unload方法

$(window).unload(function() { 
alert("good bye"); 
});

上面代码会在页面关闭时引发.

在所有DOM加载之前引发JS代码
这个方法是我在调试的时候最喜欢的,有时候开发的时候也用这种方法

<body> 
<script type="text/javascript"> 
(function() { 
alert("hi"); 
})(jQuery) 
</script> 
</body>

对,就是利用js闭包的形式将js代码嵌入body,这段代码会自动执行,当然也可以直接嵌入js代码,这种方式要注意顺序问题,如下:
<body> 
<div id="test">this is the content</div> 
<script type="text/javascript"> alert($("#test").html());//I Can display the content 
</script> 
</body> 
<body> 
<script type="text/javascript"> 
alert($("#test").html());//I Can't display the content 
</script> 
<div id="test">this is the content</div> 
</body>

上面两段代码,第二段代码当中因为只能解释到当前代码之前的DOM,而test并不存在于已经解析的DOM数.所以第二段代码无法正确显示.
Javascript 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
基于javascript数组实现图片轮播
May 02 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
js实现动态添加上传文件页面
Oct 22 Javascript
JS删除String里某个字符的方法
Jan 06 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
Jan 16 Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 Javascript
原生js实现自定义滚动条组件
Jan 20 Javascript
javascript与asp.net(c#)互相调用方法
Dec 13 #Javascript
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 #Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 #Javascript
页面中iframe相互传值传参
Dec 13 #Javascript
jquery提示 &quot;object expected&quot;的解决方法
Dec 13 #Javascript
js 加载并解析XML字符串的代码
Dec 13 #Javascript
javascript 强制刷新页面的实现代码
Dec 13 #Javascript
You might like
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
图解js图片轮播效果
2015/12/20 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
jquery实现数字输入框
2017/02/22 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
python验证码图片处理(二值化)
2019/11/01 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
家长对老师的感言
2014/03/11 职场文书
2015年人事科工作总结
2015/04/28 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android