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 相关文章推荐
javascript 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
动态加载外部javascript文件的函数代码分享
Jul 28 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
Oct 30 Javascript
js实现按Ctrl+Enter发送效果
Sep 18 Javascript
深入学习JavaScript中的Rest参数和参数默认值
Jul 28 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
实用的Vue开发技巧
May 30 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
Sep 26 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
模仿OSO的论坛(五)
2006/10/09 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
python中的编码知识整理汇总
2016/01/26 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
python为什么要安装到c盘
2020/07/20 Python
python的flask框架难学吗
2020/07/31 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
捐赠仪式主持词
2014/03/19 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
土地租赁协议书
2015/01/29 职场文书
个人党性锻炼总结
2015/03/05 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python
对讲机知识
2022/04/07 无线电