jQuery队列控制方法详解queue()/dequeue()/clearQueue()


Posted in Javascript onDecember 02, 2010

先解释一下这组方法各自的含义.
queue(name,[callback]): 当只传入一个参数时, 它返回并指向第一个匹配元素的队列(将是一个函数数组,队列名默认是fx); 当有两个参数传入时, 第一个参数还是默认为fx的的队列名, 第二个参数又分两种情况, 当第二个参数是一个函数时, 它将在匹配的元素的队列最后添加一个函数. 当第二个参数是一个函数数组时,它将匹配元素的队列用新的一个队列来代替(函数数组).可能, 这个理解起来有点晕, 稍后, 后面会有点此查看DEMO.

dequeue(name): 这个好理解, 就是从队列最前端移除一个队列函数, 并执行它.
clearQueue([queueName]):这是1.4新增的方法. 清空对象上尚未执行的所有队列. 参数可选,默认为fx. 但个人觉得这个方法没多大用, 用queue()方法传入两个参数的第二种参数即可实现clearQueue方法.
现在, 我们要实现这样一个效果, 有标有1至7的数字方块, 要求这七个方块自左到右依次下落.点此查看DEMO

jQuery队列控制方法详解queue()/dequeue()/clearQueue()

css与html部分我就不贴出来了,DEMO演示中有. 若按常规做法, 可能需要用如下jQ代码来实现:

$('.one').delay(500).animate({top:'+=270px'},500,function(){
		$('.two').delay(500).animate({top:'+=270px'},500,function(){
			$('.three').delay(500).animate({top:'+=270px'},500,function(){
				$('.four').delay(500).animate({top:'+=270px'},500,function(){
					$('.five').delay(500).animate({top:'+=270px'},500,function(){
						$('.six').delay(500).animate({top:'+=270px'},500,function(){
							$('.seven').animate({top:'+=270px'},500,function(){
								alert('按序落体运动结束! Yeah!')
							});
						});
					});
				});
			});
		});
	});

嗯, 没错, 效果很完美的呈现给出来了, 但这种晕眩的代码, 你能忍受吗? 即便可以忍受, 如果此时, 你想调换一个某个的执行顺序, 比如, 你想让5落下后再开始下落3, 或者新加8至15八个方块, 怎么办? 重写吗? 在里面小心冀冀的改吗? 显然, 我们需要另外一种列简明便捷的方法来实现这个效果, 那就是jQuery队列控制方法.请看如下代码:

var _slideFun=[
	function(){$('.one').delay(500).animate({top:'+=270px'},500,_takeOne);},
	function(){$('.two').delay(300).animate({top:'+=270px'},500,_takeOne);},
	function(){$('.three').delay(300).animate({top:'+=270px'},500,_takeOne);},
	function(){$('.four').delay(300).animate({top:'+=270px'},500,_takeOne);},
	function(){$('.five').delay(300).animate({top:'+=270px'},500,_takeOne);},
	function(){$('.six').delay(300).animate({top:'+=270px'},500,_takeOne);},
	function(){$('.seven').delay(300).animate({top:'+=270px'},500,function(){
		alert('按序落体运动结束! Yeah!');
	});}
];
$('#demo').queue('slideList',_slideFun);
var _takeOne=function(){
	$('#demo').dequeue('slideList');
};
_takeOne();

这样一来, 看起来是不是简明多了. 如何实现?
1. 新建一个数组,把动画函数依次放进去(这样更改顺序,新加动画是不是方便多了?);
2. 用queue将这组动画函数数组加入到slideList队列中;
3. 用dequeue取出slideList队列中第一个函数, 并执行它;
4. 初始执行第一个函数.
DEMO演示中也有详解的注释, 如果上面的说明还看不明白,请看源码.
至于clearQueue()方法,就不多说了, 演示中停止按钮调用的就是clearQueue()方法,当然你还可以用queue()方法直接将现在的函数列队替换成[]空数组实现(个人比较推荐空数组替换.,更直观).

Javascript 相关文章推荐
建立良好体验度的Web注册系统ajax
Jul 09 Javascript
JS实现兼容性较好的随屏滚动效果
Nov 09 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
Dec 01 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
JavaScript寄生组合式继承实例详解
Jan 06 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
判断“命令按钮”是否被鼠标单击详解
Jul 31 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
Apr 14 Javascript
vue使用video插件vue-video-player的示例
Oct 03 Javascript
详解JavaScript原型与原型链
Nov 16 Javascript
vue判断按钮是否可以点击
Apr 09 Vue.js
JQuery 弹出框定位实现方法
Dec 02 #Javascript
Jquery replace 字符替换实现代码
Dec 02 #Javascript
jquery json 实例代码
Dec 02 #Javascript
JavaScript格式化数字的函数代码
Nov 30 #Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
Nov 30 #Javascript
基于prototype扩展的JavaScript常用函数库
Nov 30 #Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
Nov 30 #Javascript
You might like
PR值查询 | PageRank 查询
2006/12/20 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
js 函数性能比较方法
2020/08/24 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python下载图片实现方法(超简单)
2017/07/21 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
大学生旅游业创业计划书
2014/01/29 职场文书
群众路线剖析材料
2014/02/02 职场文书
服装发布会策划方案
2014/05/22 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书