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 相关文章推荐
jquery中this的使用说明
Sep 06 Javascript
javascript Deferred和递归次数限制实例
Oct 21 Javascript
自己封装的常用javascript函数分享
Jan 07 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
Ajax基础知识详解
Feb 17 Javascript
angular学习之ngRoute路由机制
Apr 12 Javascript
详解如何在react中搭建d3力导向图
Jan 12 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
Sep 27 Javascript
微信小程序HTTP请求从0到1封装
Sep 09 Javascript
JavaScript 类的封装操作示例详解
May 16 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版国家代码、缩写查询函数代码
2011/08/14 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
python类继承与子类实例初始化用法分析
2015/04/17 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python读取网页内容的方法
2015/07/30 Python
mac系统安装Python3初体验
2018/01/02 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
大学生先进事迹材料
2014/02/16 职场文书
青年文明号口号
2014/06/17 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
电气工程师岗位职责
2015/02/12 职场文书
《海上日出》教学反思
2016/02/23 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS