jQuery的文档处理程序详解


Posted in Javascript onMay 10, 2016

本文实例讲述了jQuery的文档处理程序。分享给大家供大家参考,具体如下:

jQuery文档处理程序

所谓的文档处理程序,是指jQuery中提供的$(document).ready事件,此事件会在dom加载完毕后触发,而window.onlaod和body.onload都是在页面完全加载后触发。

jQuery文档处理程序介绍

在jQuery中想实现在DOM加载完毕后的处理逻辑,只需要使用$(document).ready()事件。此事件函数称为"jQuery文档处理程序"。

可以在页面的任何位置,甚至是外部的js文件中,编写如下列语句:

$(document).ready(function (){ alert("document.ready")});

则在页面的DOM加载完毕后,会立刻执行alert语句。如果页面上有大的图片、js文件等外部资源需要加载,jQuery的文档处理程序会在其之前执行,而window.onload和boyd.onload是在所有的资源文件加载完毕后执行的。

Ready()函数时jQuery"事件函数"中提供的一个jQuery对象函数,签名位ready(fn)。

fn是ready事件发生时执行的函数。

因为是jQuery对象函数,意味着可以在任何jQuery对象上调用:

$("body").ready(function (){ alert("body.ready")});

上面的语句等同于:

$(document).ready(function (){alert("body.ready")});

虽然ready()函数可以作用在任何jQuery对象上,但是使用时一定要注意对象是否具有ready事件。

也可以使用"$(fn)"这种简化的形式:

$(function (){….})
//等效于$(document).ready(function(){…});

同jQuery中所有的事件对象一样,$(document).ready事件,会按照出现的先后顺序执行。

比如,可以调用两次$(document).ready事件:

$(document).ready(function (){alert("document.ready-1")});
$(document). ready(function (){alert("document.ready-2")});

则在DOM加载完毕后,首先输出"document.ready-1",然后输出"document.ready-2"。如果使用传统的:

Window.onload=function(){…..};

上面的代码会将window.onload原有的事件处理掉,然后绑定新的事件。

jQuery文档处理程序的优势

如果脚本需要在页面加载时执行,那么大部分的脚本都可以放在$(document).ready()事件中。

在举例jQuery文档处理程序的优势之前,先看一个常见的JavaScript编程错误:dom未加载完成即改变dom模型。

在传统的javascript编程中。有时会在页面的头部或者底部直接插入script模块并编写代码,比如下面的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 
Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>jQueryStorm ? 常见错误编程方式举例</title>
  <scriptlanguage="javascript"type="text/javascript"src="../include/jquery-1.7.1.js"></script>
</head>
<body>
<!-- 页面内容部分 ?>
<div id="divMsg" style="border:solid 1px#000000;padding:20px;"></div>
<!-- 尾部模块 -->
<script language="javascript" type="text/javascript">
  //这条语句在某些情况下会导致错误
  Document.getElementById("divMsg").innerHTML="<divstyle=\"border:solid 2px #FF0000\">动态添加的图层</div>";
</script>
</boyd>
</html>

此例子在所有的浏览器都运行良好,但是存在隐患。因为在页面加载时,就在divMsg容器中添加了一个新的div对象,也就是添加了一个dom对象,当网速变慢或者页面很大需要一定的加载时间,会出现"中止操作"的错误。

这个错误甚至曾经在Google首页、淘宝等知名网站上都出现过,因为此错误很难在测试时候发现。

所以做web开发是要记住一条真理:永远不要再dom加载时修改dom结构。

如果需要在页面加载时修改dom结构,原始的做法是通过window.onload和body.onload事件实现,比如针对上面的错误例子,可以修改为:

<script type="text/javascript">
Window.onload=function()
{
  Document.getElementById("divMsg").innerHTML="<divstyle="\border:solid 2px #FF0000\">动态添加的图层</div>";
};
</script>

具体的实现方式还有很多,应用window.onload和body.onload是因为这两个事件都是在dom加载完成并且所有页面资源加载完成后才执行的,这是最简单的做法。或者根据"document.readyState"判断dom的状态,如果是"complete"则进行某些操作,jQuery的文档处理程序$(document).ready内部正是使用的此原理。

希望本文所述对大家jquery程序设计有所帮助。

Javascript 相关文章推荐
JS保存和删除cookie操作 判断cookie是否存在
Nov 13 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Sep 04 Javascript
使用C++为node.js写扩展模块
Apr 22 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
Dec 01 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
vue: WebStorm设置快速编译运行的方法
Oct 18 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
jQuery实现简单三级联动效果
Sep 05 jQuery
有关easyui-layout中的收缩层无法显示标题的解决办法
May 10 #Javascript
jQuery对象与DOM对象转换方法详解
May 10 #Javascript
jQuery对象的链式操作用法分析
May 10 #Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 #Javascript
Bootstrap按钮下拉菜单组件详解
May 10 #Javascript
JavaScript编写页面半透明遮罩效果的简单示例
May 09 #Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 #Javascript
You might like
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
php+mysql数据库查询实例
2015/01/21 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
python中迭代器(iterator)用法实例分析
2015/04/29 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
用Python实现数据的透视表的方法
2018/11/16 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
酒店管理自荐信
2013/10/23 职场文书
保洁主管岗位职责
2013/11/20 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
网站推广策划方案
2014/06/04 职场文书
狮子林导游词
2015/02/03 职场文书
教师学期末个人总结
2015/02/13 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
首席执行官观后感
2015/06/03 职场文书
经营场所使用证明
2015/06/19 职场文书
《所见》教学反思
2016/02/23 职场文书