• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jQuery的ready方法详解

jQuery的ready方法详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-08-16

通过本文主要向大家介绍了jQuery,ready等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

jQuery中的ready方法实现了当页面加载完成后才执行的效果,但他并不是window.onload或者doucment.onload的封装,而是使用 标准W3C浏览器DOM隐藏api和IE浏览器缺陷来完成的,首先,我们来看jQuery的代码

DOMContentLoaded = function()
 {
         //取消事件监听,执行ready方法     if ( document.addEventListener )
    {     
        document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
        jQuery.ready();
    }
     else if ( document.readyState === "complete" ) 
    {
        document.detachEvent( "onreadystatechange", DOMContentLoaded );
        jQuery.ready();
    }
};

jQuery.ready.promise = function( obj ) {
    if ( !readyList ) {
        readyList = jQuery.Deferred();
            //表示页面已经加载完成,直接调用 ready方法         if ( document.readyState === "complete" ) { 
            //将 jQuery.ready压入异步消息队列,设置延迟时间1毫秒(注意,有些浏览器延迟不能小于4毫秒)             setTimeout( jQuery.ready); 
        } 
        else if ( document.addEventListener ) //         {
             //监听DOM加载完成             document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
             //这里是为了确保所有ready执行结束,如果DOMContentLoaded方法执行了,将有一个状态值 isReady被设置为true,因此,              //ready方法一旦执行,那么将只执行一次,window.addEventListener中的ready 将被 return 中断             window.addEventListener( "load", jQuery.ready, false );
        } else {
            //低版本的IE浏览器             document.attachEvent( "onreadystatechange", DOMContentLoaded );
            window.attachEvent( "onload", jQuery.ready );
            var top = false;
            try {
                top = window.frameElement == null && document.documentElement;
            } catch(e) {}
            if ( top && top.doScroll )  //剔除iframe的成分             {
                (function doScrollCheck() {
                    if ( !jQuery.isReady ) {
                        try {
                            //根据bug来兼容低版本的IE http://javascript.nwbox.com/IEContentLoaded/                             top.doScroll("left");
                        } catch(e) {
                            //由于低版本的IE 浏览器,onreadystatechange事件不可靠,因此需要根据各个bug来判断页面是否已加载完成                             return setTimeout( doScrollCheck, 50 ); 
                        }
                        jQuery.ready();
                    }
                })();
            }
        }
    }
    return readyList.promise( obj );
};

ready: function( wait )
 {
 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
  //判断页面是否已完成加载并且是否已经执行ready方法
  return;
 }
 if ( !document.body ) {
  return setTimeout( jQuery.ready );
 }
 jQuery.isReady = true; //指示ready方法已被执行
 if ( wait !== true && --jQuery.readyWait > 0 ) {
  return;
 }
 readyList.resolveWith( document, [ jQuery ] );
 if ( jQuery.fn.trigger ) {
  jQuery( document ).trigger("ready").off("ready");
 }
},

总结:

 页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页 面包含图片等文件在内的所有元素都加载完成。(可以说:ready 在onload 前加载!!!)
一般样式控制的,比如图片大小控制放在onload 里面加载;
jS事件触发的方法,可以在ready 里面加载;

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于jQuery对象和DOM对象和字符串之间的转化实例
  • jquery+css实现简单的图片轮播效果
  • 使用jQuery实现鼠标点击左右按钮滑动切换
  • jQuery实现上传图片前预览效果功能
  • jQuery初级教程之网站品牌列表效果
  • 基于jquery实现多选下拉列表
  • jQuery接受后台传递的List的实例详解
  • 详解jquery选择器的原理
  • jQuery上传插件webupload使用方法
  • 关于jquery form表单序列化的注意事项详解

相关文章

  • 2017-08-16jquery last-child 列表最后一项的样式
  • 2017-08-16封装了jQuery的Ajax请求全局配置
  • 2017-08-16使用jQuery简化Ajax开发 Ajax开发入门
  • 2017-08-16JQuery报错Uncaught TypeError: Illegal invocation的处理方法
  • 2017-08-16jQuery选中select控件 无法设置selected的解决方法
  • 2017-08-16jQuery实现级联菜单效果(仿淘宝首页菜单动画)
  • 2017-08-16jQuery替换字符串(实例代码)
  • 2017-08-16jQuery树形插件jquery.simpleTree.js用法分析
  • 2017-08-16Jquery修改页面标题title其它JS失效的解决方法
  • 2017-08-16动态获取复选框checkbox选中个数的jquery代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 从零开始学习jQuery (五) jquery事件与事件对象
    • 关于jQuery.ajax()的jsonp碰上post详解
    • Jquery中getJSON在asp.net中的使用说明
    • jQuery垂直多级导航菜单代码分享
    • jQuery实现带渐显效果的人物多级关系图代码
    • jQuery使用DataTable实现删除数据后重新加载功能
    • jquery获得下拉框值的代码
    • jQuery EasyUI编辑DataGrid用combobox实现多级联动
    • 基于jQuery实现的图片切换焦点图整理
    • JQuery控制radio选中和不选中方法总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有