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 相关文章推荐
一个符号插入器 中用到的js代码
Sep 04 Javascript
asp批量修改记录的代码
Jun 25 Javascript
javascript中取前n天日期的两种方法分享
Jan 26 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
js+css实现上下翻页相册代码分享
Aug 18 Javascript
jQuery Validate验证框架经典大全
Sep 23 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
vue组件之间的数据传递方法详解
Apr 19 Javascript
Javascript 对象(object)合并操作实例分析
Jul 30 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
Sep 27 Javascript
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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
php防止sql注入的方法详解
2017/02/20 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
js兼容标准的表格变色效果
2008/06/28 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
从零学Python之入门(三)序列
2014/05/25 Python
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
使用Python对Access读写操作
2017/03/30 Python
Python Gitlab Api 使用方法
2019/08/28 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
python实现在一个画布上画多个子图
2020/01/19 Python
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
数据库连接池的工作原理
2012/09/26 面试题
经销商会议欢迎词
2014/01/11 职场文书
卫生安全检查制度
2014/02/04 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
商场父亲节活动方案
2014/08/27 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
Redis可视化客户端小结
2021/06/10 Redis