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 相关文章推荐
javascript 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
node在两个div之间移动,用ztree实现
Mar 06 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
简单实用的反馈表单无刷新提交带验证
Nov 15 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
三种取消选中单选框radio的方法
Sep 09 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
May 24 Javascript
深入理解vue路由的使用
Mar 24 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
Nov 29 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
基于mysql的论坛(3)
2006/10/09 PHP
php empty函数 使用说明
2009/08/10 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
网页javascript精华代码集
2007/01/24 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
python字典多条件排序方法实例
2014/06/30 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
英文简历中的自我评价
2013/10/06 职场文书
工商管理自荐书
2014/07/06 职场文书
英文商务邀请函范文
2015/01/31 职场文书
婚宴来宾致辞
2015/07/28 职场文书
初一年级组工作总结
2015/08/12 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
解析Java中的static关键字
2021/06/14 Java/Android
MySQL日期时间函数知识汇总
2022/03/17 MySQL