我知道在jQuery中,对于$(function(){ })进行的调用是按照它们定义的顺序执行的,但我想知道是否能够控制队列的顺序?
比如说,是否可以在调用"Hello World 1"之前先调用"Hello World 2":
$(function(){ alert('Hello World 1') });
$(function(){ alert('Hello World 2') });
问题是是否可能......我已经知道这违反了最佳实践 ;)
我知道在jQuery中,对于$(function(){ })进行的调用是按照它们定义的顺序执行的,但我想知道是否能够控制队列的顺序?
比如说,是否可以在调用"Hello World 1"之前先调用"Hello World 2":
$(function(){ alert('Hello World 1') });
$(function(){ alert('Hello World 2') });
// 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();
您可以在此处了解更多相关的IT技术内容。
readyList
中,因此我认为它不可访问和操作。
http://github.com/jquery/jquery/blob/master/src/core.js#L47
In the following example, the first DOM Ready block is trying to access the height of the test div which is appended to the body in a later DOM Ready block. As in the Fiddle it fails to get it.
jQuery(function () {
var testDivHeight = jQuery("#test-div").outerHeight();
if(testDivHeight) {
alert("Height of test div is: "+testDivHeight);
} else {
alert("Sorry I cannot get the height of test div!");
}
});
jQuery(function () {
jQuery('body').append('<div style="background: #C00; height: 100px;" id="test-div"></div>');
});
In the following example, it is doing exactly the same as the example before using jQuery.ready.promise. As in the Fiddle it works as required.
jQuery(function () {
jQuery.ready.promise().done(function () {
var testDivHeight = jQuery("#test-div").outerHeight();
if(testDivHeight) {
alert("Height of test div is: "+testDivHeight);
} else {
alert("Sorry I cannot get the height of test div!");
}
});
});
jQuery(function () {
jQuery('body').append('<div style="background: #C00; height: 100px;" id="test-div"></div>');
});
readyList
数组并根据您的喜好重新排序元素。