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类 from qq
Nov 13 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
a标签click和href执行顺序探讨
Jun 23 Javascript
JavaScript数据类型检测代码分享
Jan 26 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
JavaScript实现滑动门效果
Jan 18 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
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
跟老齐学Python之编写类之三子类
2014/10/11 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
商务会议邀请函
2014/01/09 职场文书
技术经济专业求职信
2014/09/03 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
2015年教师新年寄语
2014/12/08 职场文书
教师个人成长总结
2015/02/11 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python