jquery equeue 用来缓存调用方法队列,对于需要按顺序执行的方法场景非常有效,例如动画,需要在上一个动画完成之后,执行下个动画动作或者回调函数
1.方法queue,dequeue,clearQueue
function fn1(){
console.log("fn1 invoke");
};
function fn2(){
console.log("fn2 invoke");
};
function fn3(){
console.log("fn3 invoke");
};
var fnarr = [fn1,fn2,fn3];
//$(select).queue(key,arr) //将一系列动作绑定key为"fns"的队列上,内部的原理是利用jq的缓存系统,再将该队列附到选择器选择的节点上缓存起来
$(document).queue("fns",fnarr);
//$(select).queue(key) //通过key来获取缓存队列
console.log$(document).queue("fns").length);
//$(select).dequeue(key) //通过key获取队列,并弹出该队列的一个方法进行执行,按照队列先进先出的原则
$(document).dequeue("fns") //调用一次dequeue,将队列弹出一个方法进行执行
//$(select).dequeue(key,fn) //将一个函数插入到队列的列尾,还未执行
.queue("fns",function(){
console.log("fn4 invoke");
})
.dequeue("fns")
.dequeue("fns")
.dequeue("fns"); //执行这个将输出"fn4 invoke"
2.原理
内部建一个数组队列,提供一个key,然后方法缓存对象中,再赋值到提供给的dom节点上,其实就是利用jquery data 缓存系统把方法队列缓存起来