// 两个参数(入队操做)
$('div')
.queue('china', function (next) {
console.log('任务1');
next(); // next指下一个队列任务
})
.queue('china', function (next) {
console.log('任务2');
next();
})
.queue('china', function () {
console.log('任务3');
});
// 获取type为china的队列
console.log($('div').queue('china')) // 执行结果:输出[ƒ, ƒ, ƒ]
复制代码
// 出队操做
$('div').dequeue('china')
复制代码
// 在handle中添加next回调函数,而且调用
$('div')
.queue('china', function (next) {
console.log('任务1');
next(); // next指下一个队列任务
})
.queue('china', function (next) {
console.log('任务2');
next();
})
.queue('china', function () {
console.log('任务3');
});
// 出队操做
$('div').dequeue('china');
// 执行结果:依次输出任务1,任务2,任务3
console.log($('div').queue('china')); // 执行结果:输出[]
复制代码
clearQueuejavascript
$('div').clearQueue('china');
console.log($('div').queue('china')); // 执行结果:输出[]
复制代码
jQuery.prototype.myQueue = function () {
var queueName = arguments[0] || 'fx', // type
addFunc = arguments[1] || null, // handle
len = arguments.length;
// 只存在type(获取队列)
if (len === 1) return this[0][queueName];
// type,handle都存在(入队)
if (this[0][queueName] === undefined) this[0][queueName] = [addFunc];
else this[0][queueName].push(addFunc);
return this
};
复制代码
jQuery.prototype.myDeQueue = function () {
var _self = this,
queueName = arguments[0] || 'fx',
queueArr = _self.myQueue(queueName), // 获取队列
currFunc = queueArr.shift(); // 出队
var next = function () { // 递归调用
_self.myDeQueue(queueName);
};
if (currFunc == null) return;
currFunc(next);
return _self;
};
复制代码