jQuery多文档就绪队列顺序

Der*_*ker 8 jquery document-ready domready

我知道jQuery中对$(function(){})的调用是按照定义的顺序执行的,但是我想知道你是否可以控制队列的顺序?

例如,是否可以在"Hello World 1"之前调用"Hello World 2":

$(function(){ alert('Hello World 1') });
$(function(){ alert('Hello World 2') });
Run Code Online (Sandbox Code Playgroud)

问题是它是否可能......我已经知道它违背了最佳做法;)

ova*_*riq 7

这是你要怎么做的:

// lower priority value means function should be called first
var method_queue = new Array();

method_queue.push({
  method : function()
  { 
    alert('Hello World 1');
  },
  priority : 2
});

method_queue.push({
  method : function()
  { 
    alert('Hello World 2');
  },
  priority : 1
});


function sort_queue(a, b)
{
  if( a.priority < b.priority ) return -1;
  else if( a.priority == b.priority ) return 0;
  else return 1;  
}

function execute_queue()
{
  method_queue.sort( sort_queue );

  for( var i in method_queue ) method_queue[i].call( null );
}

// now all you have to do is 
execute_queue();
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多相关信息


use*_*716 3

这些函数被添加到私有数组中readyList,所以我想说它无法进行操作。

http://github.com/jquery/jquery/blob/master/src/core.js#L47