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 DOM 元素ID就是全局变量
Sep 20 Javascript
javascript标签在页面中的位置探讨
Apr 11 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
Apr 17 Javascript
node.js中的fs.existsSync方法使用说明
Dec 17 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
Mar 17 Javascript
JavaScript中模拟实现jsonp
Jun 19 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
跟我学习javascript的全局变量
Nov 16 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
Nov 27 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
有关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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
smarty中js的调用方法示例
2014/10/27 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
php集成动态口令认证
2016/07/21 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Python快速从注释生成文档的方法
2016/12/26 Python
Python实现的端口扫描功能示例
2018/04/08 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
税务专业毕业生自荐信
2013/11/10 职场文书
农民致富事迹材料
2014/01/23 职场文书
学生会离职感言
2014/02/11 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
小学端午节活动总结
2015/02/11 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS