이 글에서는 jQuery의 Ready 메소드 사용법을 주로 소개합니다. 이 메소드는 로딩이 완료된 경우에만 실행되는 효과를 얻기 위해 사용됩니다.
jQuery의 Ready 메소드는 페이지가 로드된 후에만 실행되는 효과를 얻습니다. 그러나 window.onload 또는 document.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"); } },
요약:
페이지가 로드되면 두 가지 이벤트가 있습니다. 하나는 문서 구조가 로드되었음을 의미하는 준비 상태이고(images와 같은 텍스트가 아닌 미디어 파일 제외) 두 번째는 모든 요소가 로드되었음을 나타내는 onload입니다. 이미지 및 기타 파일을 포함한 페이지가 로드되었습니다. (즉, Ready는 onload 전에 로드됩니다!!!)
이미지 크기 제어와 같은 일반적인 스타일 제어는 onload에 로드됩니다.
JS 이벤트 트리거링 메소드는 Ready에 로드될 수 있습니다.
위 내용은 jQuery의 Ready 메소드 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!