首页 > 其他分享 >jQuery队列控制方法详解queue()/dequeue()/clearQueue()

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

时间:2023-06-04 15:07:09浏览次数:31  
标签:jQuery function 270px color dequeue top queue animate 500


jQuery 遍历 - jQuery.queue() 方法: [url]http://www.w3school.com.cn/jquery/data_jquery_queue.asp[/url]



jQuery核心中, 有一组队列控制方法, 这组方法由queue()/dequeue()/clearQueue()三个方法组成, 它对需要连续按序执行的函数的控制可以说是简明自如, 主要应用于animate ()方法, ajax以及其他要按时间顺序执行的事件中.
先解释一下这组方法各自的含义.
[color=red][b]queue(name,[callback]): [/b][/color]
1.当只传入一个参数时, 它返回并指向第一个匹配元素的队列(将是一个函数数组,队列名默认是fx);
2.当有两个参数传入时, 第一个参数还是默认为fx的的队列名, 第二个参数又分两种情况,
A: 当第二个参数是一个函数时, 它将在匹配的元素的队列最后[b][color=blue]添加[/color][/b]一个函数.
B: 当第二个参数是一个函数数组时,它将匹配元素的队列用新的一个队列来[color=darkblue][b]代替[/b][/color](函数数组).可能, 这个理解起来有点晕, 稍后, 后面会有点此查看DEMO.

[color=red][b]dequeue(name):[/b][/color] 这个好理解, 就是从队列最前端[color=darkblue][b]移除[/b][/color]一个队列函数, [color=darkblue][b]并执行它[/b][/color].

[b][color=red]clearQueue([queueName]):[/color][/b]这是1.4新增的方法. 清空对象上尚未执行的所有队列. 参数可选,默认为fx. 但个人觉得这个方法没多大用, 用queue()方法传入两个参数的第二种参数即可实现clearQueue方法.

现在, 我们要实现这样一个效果, 有标有1至7的数字方块, 要求这七个方块自左到右依次下落.
Demo:[url]http://mrthink.net/demo/ijq20101129.htm[/url]
[img]http://mrthink.net/wp-content/uploads/2010/11/20101129.png[/img]

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()方法直接将现在的函数列队替换成[]空数组实现(个人比较推荐空数组替换.,更直观).


标签:jQuery,function,270px,color,dequeue,top,queue,animate,500
From: https://blog.51cto.com/u_3871599/6410660

相关文章

  • jquery插件合集之分页插件[表单和表格]
    [url]http://www.skygq.com/2011/01/24/jquery%E6%8F%92%E4%BB%B6%E5%90%88%E9%9B%86%E4%B9%8B%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6/[/url][color=red][b]jPaginate:AFancyjQueryPaginationPlugin[/b][/color][url]http://tympanus.net/codrops/2......
  • 4 个多才多艺的 jQuery 下拉菜单插件
    [url]http://www.php100.com/html/webkaifa/javascript/2012/0607/10512.html[/url]这里我们收集了4个最棒的jQuery下拉菜单插件,提供很多特性,例如自动完成、搜索、标签、多选、ajax等。1.ddSlickddSlick是一个轻量级的jQuery插件用来实现定制的下......
  • jQuery实现多级手风琴菜单
    手风琴菜单一般用于下拉导航,由于外观非常简洁,使用起来跟手风琴一样可以拉伸和收缩而得名,项目中适当应用手风琴效果会给用户带来非常好的体验。本文借助jQuery插件轻松打造一个非常不错的手风琴效果的菜单。[img]http://www.helloweba.com/attachments/fck/multi_menu.gif[/img]De......
  • jQuery选择器大全(48个代码片段+21幅图演示)
    一、基本选择器1.id选择器(指定id元素)将id="one"的元素背景色设置为黑色。(id选择器返单个元素)$(document).ready(function(){$('#one').css('background','#000');});2.class选择器(遍历css类元素)将class="cube"的元素背景色设为黑色$(document).ready(......
  • JQuery Block UI V2
    [b][color=red]最好参考地址[/color][/b]:[url]http://www.cssrain.cn/demo/blockUI-V2/jQuery/blockUI/jQueryBlockUI.html[/url]ThejQueryBlockUI插件是用于进行AJAX操作时模拟同步传输时锁定浏览器操作[1]。当它被激活时,它会阻止使用者与页面(或页面的......
  • __blk_run_queue
    1.aoe_end_request2.blk_delay_work3.blk_start_queue4.blk_run_queue5.__blk_drain_queue6.blk_queue_bio7.blk_insert_cloned_request8.queue_unplugged9.blk_post_runtime_resume10.blk_execute_rq_nowait11.cfq_rq_enqueued12.cfq_kick_queue13.__elv_add_re......
  • jquery实用广告画廊效果插件-PikaChoose
    PikaChoose是一个超轻量级的图片画廊jQuery插件,它是可以轻而易举地使用在您的网站。有许多的网站使用了他,在他的主页上可以看到这些网站。效果图如: 官网地址:http://www.pikachoose.com/github地址:https://github.com/jeremyfry/PikaChoose ......
  • jQuery 是javascript的一个库(常用插件、处理器)
    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validationjQuery就是javascript的一个库,把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率。极大地简化了JavaScript编程。Javascipt跟jQuery的区别:Javascript是一门编程语言,我们用......
  • 使用 jQuery 进行前端验证
    前段验证脚本的教程,其基础为jQuery的插件validate。   一、可以验证哪些信息要求输入不能为空要求输入格式必须为电子邮箱要求输入格式必须为URL要求输入格式必须为日期要求输入格式必须为数字要求输入格式必须为整数要求输入必须和指定输入框内容相同要求输入必须大......
  • JQuery笔记 - JQuery HTML
    JQueryHTML目录JQueryHTML1.获取与设置DOM1.1回调函数2.添加与删除DOM2.1append与after(prepend和before)的区别2.2重复添加元素3.CSS类3.1添加、删除和切换样式3.2css()1.获取与设置DOMtext()-设置或返回所选元素的文本内容//获取指定元素的文本内容$("#btn1")......