最近做插件遇到的问题,记录如下:
本文以实例形式说明了多个$(document).ready()的执行顺序问题,由实例可以看出多个$(document).ready()的执行顺序并非单纯的顺序执行,其与嵌套层级也有一定的关系。具体实例代码如下:
<html>
<head>
<script src="./jquery-1.9.0.min.js"></script>
<script type="text/javascript">
$(function(){
alert('1');
$(function(){
alert('2');
$(function(){
alert('3');
});
});
});
</script>
<body>
TTTTTTTTTTTT
<script type="text/javascript">
$(document).ready(function() {
alert('4');
$(function(){
alert('5');
});
});
</script>
KKKKKKKKKKKK
<script type="text/javascript">
$(function(){
alert('6');
$(document).ready(function() {
alert('7');
});
});
</script>
</body>
</html>
运行alert显示顺序为:1,4,6,2,5,7,3
读者可以自己测试体验一下,以加深对多个$(document).ready()执行顺序的理解。
有兴趣还可以在控制台里试试这堆:
var 队列 = [];
function 队列添加(函数) {
队列.push(函数);
}
function 执行队列() {
while (函数 = 队列.shift()) {
函数();
}
}
队列添加(function () {
console.log('1');
队列添加(function () {
console.log('2');
队列添加(function () {
console.log('3');
});
});
});
队列添加(function () {
console.log('4');
队列添加(function () {
console.log('5');
});
});
队列添加(function () {
console.log('6');
队列添加(function () {
console.log('7');
});
});
执行队列();