解决方法
是的,它必须等待.
特别是,在其他脚本有机会执行之前,您不能依赖jQuery(document).ready().
ready可以绑定到DOMContentReady,readystatechanged或onload,无论哪个可用.
特别是,在其他脚本有机会执行之前,您不能依赖jQuery(document).ready().
ready可以绑定到DOMContentReady,readystatechanged或onload,无论哪个可用.
该文档指出“在大多数情况下,只要DOM层次结构已完全构建,脚本就可以运行”.请注意,唯一的保证是在此事件触发时DOM已准备就绪.
它不能保证你的任何其他东西 – 因为它不能.
例如,这在IE,Firefox或Chromium中不起作用,无论您如何随机播放脚本标记,都会在ready()处理程序有机会执行之前调用brilliant.js:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test</title> <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.js" charset="utf-8" type="text/javascript" ></script> </head> <body> <script type="text/javascript" > // <![CDATA[ alert("attaching event"); $(document).ready(function () { alert("fired"); }); // ]]> </script> <script type="text/javascript" src="brilliant.js" ></script> </body> </html>
仅供参考,这是jquery-1.4.2的相关代码:
bindReady: function() { if ( readyBound ) { return; } readyBound = true; // Catch cases where $(document).ready() is called after the // browser event has already occurred. if ( document.readyState === "complete" ) { return jQuery.ready(); } // Mozilla,Opera and webkit nightlies currently support this event if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded",DOMContentLoaded,false ); // A fallback to window.onload,that will always work window.addEventListener( "load",jQuery.ready,false ); // If IE event model is used } else if ( document.attachEvent ) { // ensure firing before onload,// maybe late but safe also for iframes document.attachEvent("onreadystatechange",DOMContentLoaded); // A fallback to window.onload,that will always work window.attachEvent( "onload",jQuery.ready ); // If IE and not a frame // continually check to see if the document is ready var toplevel = false; try { toplevel = window.frameElement == null; } catch(e) {} if ( document.documentElement.doScroll && toplevel ) { doScrollCheck(); } } },
原文地址:https://www.jb51.cc/jquery/177714.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。