准备执行jquery文件的顺序
假设,我有一个如下所示的js文件:
$(document).ready(function() { // first task} ); $(document).ready(function() { // second task } ); $(document).ready(function() { // third task } );
加载文件后,任务按顺序执行。 我无法理解为什么? 我猜测,当“就绪”事件发生时会触发callback方法。 执行订单如何保留? 连续的回电是否在某个地方排队?
注:我知道这是一个非常天真的编码方式。 我写了这个代码片段只是为了说明问题,不要在我的项目中编写这样的代码。
您的处理程序正在被推入一个数组 ( readyList
)中,以便稍后在document
准备就绪时执行。
他们排队这样 :
readyList.push( fn );
并准备好像这样执行 :
var fn, i = 0; while ( (fn = readyList[ i++ ]) ) { fn.call( document, jQuery ); }
如果文档已经准备好了,那么他们将立即执行,这仍然是有序的。
您指定的function按顺序添加到列表中。 当DOM准备就绪时,jQuery遍历该列表并按照该顺序调用函数。
你的名单变成类似..
handlers = [ function(){ alert('first') }, function() { alert('second')} ];
然后循环遍历…
for ( var i = 0, l = handlers.length; i<l; ++i ) { handlers.apply( document, arguments ) }
这些函数在文档的上下文中被调用。
这不是更好,但在$(窗口).load内,你可以有更多的控制。 $(document).ready之后
$(window).load( fn );