最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery的ready方法用法详解

来源:动视网 责编:小采 时间:2020-11-27 20:18:45
文档

jQuery的ready方法用法详解

jQuery的ready方法用法详解:本文主要介绍了jQuery的ready方法的使用方法,用此方法实现了当爷们加载完成后才执行的效果,有相同需求的小伙伴可以参考下。jQuery中的ready方法实现了当页面加载完成后才执行的效果,但他并不是window.onload或者doucment.onload的封装,而是使
推荐度:
导读jQuery的ready方法用法详解:本文主要介绍了jQuery的ready方法的使用方法,用此方法实现了当爷们加载完成后才执行的效果,有相同需求的小伙伴可以参考下。jQuery中的ready方法实现了当页面加载完成后才执行的效果,但他并不是window.onload或者doucment.onload的封装,而是使


本文主要介绍了jQuery的ready方法的使用方法,用此方法实现了当爷们加载完成后才执行的效果,有相同需求的小伙伴可以参考下。

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 里面加载;

文档

jQuery的ready方法用法详解

jQuery的ready方法用法详解:本文主要介绍了jQuery的ready方法的使用方法,用此方法实现了当爷们加载完成后才执行的效果,有相同需求的小伙伴可以参考下。jQuery中的ready方法实现了当页面加载完成后才执行的效果,但他并不是window.onload或者doucment.onload的封装,而是使
推荐度:
标签: 方法 使用 用法
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top