jQuery核心中, 有一组队列控制方法, 这组方法由queue()/dequeue()/clearQueue()三个方法组成, 它对需要连续按序执行的函数的控制可以说是简明自如, 主要应用于animate ()方法, ajax以及其他要按时间顺序执行的事件中.
先解释一下这组方法各自的含义.
queue(name,[callback]): 当只传入一个参数时, 它返回并指向第一个匹配元素的队列(将是一个函数数组,队列名默认是fx); 当有两个参数传入时, 第一个参数还是默认为fx的的队列名, 第二个参数又分两种情况, 当第二个参数是一个函数时, 它将在匹配的元素的队列最后添加一个函数. 当第二个参数是一个函数数组时,它将匹配元素的队列用新的一个队列来代替(函数数组).可能, 这个理解起来有点晕, 稍后, 后面会有点此查看DEMO.
dequeue(name): 这个好理解, 就是从队列最前端移除一个队列函数, 并执行它.
clearQueue([queueName]):这是1.4新增的方法. 清空对象上尚未执行的所有队列. 参数可选,默认为fx. 但个人觉得这个方法没多大用, 用queue()方法传入两个参数的第二种参数即可实现clearQueue方法.
现在, 我们要实现这样一个效果, 有标有1至7的数字方块, 要求这七个方块自左到右依次下落.点此查看DEMO

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

原文发布于Mr.Think的博客 : http://mrthink.net/jqueryapi-queue-dequeue/ 转载请注明

转载于:https://www.cnblogs.com/mrthink/archive/2010/12/02/1894143.html

jQuery队列控制方法详解queue()/dequeue()/clearQueue()相关推荐

  1. ucos 消息队列代码详解_用python实现 多进程队的列数据处理详解,零基础记得都收藏哦

    今天就为大家分享一篇python 多进程队列数据处理详解,具有很好的参考价值,希望对大家有所帮助.喜欢的话记得点赞转发关注不迷路哦!!! 总之了写到多进程队列数据处理问题,也就不多废话了,直接来上代码 ...

  2. python多进程队列中的队列_python 多进程队列数据处理详解

    我就废话不多说了,直接上代码吧! # -*- coding:utf8 -*- import paho.mqtt.client as mqtt from multiprocessing import P ...

  3. BlockingQueue(阻塞队列)详解

    推荐:Java并发编程汇总 BlockingQueue(阻塞队列)详解 原文地址 BlockingQueue 一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程 ...

  4. 消息队列超详解(以RabbitMQ和Kafka为例,为何使用消息队列、优缺点、高可用性、问题解决)

    消息队列超详解(以RabbitMQ和Kafka为例) 为什么要用消息队列这个东西? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦.异步.削峰. 解耦:现场画个图来说明一 ...

  5. jQuery数组处理详解(含实例演示)

    jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...

  6. [zz]jQuery.extend 函数详解

    JQuery的extend扩展方法:       Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.       一.Jquery的扩 ...

  7. python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

  8. jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()

    原文:http://www.codeceo.com/article/jquery-plugin-develop.html 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我 ...

  9. php mysql 任务队列_PHP+MySQL实现消息队列步骤详解

    这次给大家带来PHP+MySQL实现消息队列步骤详解,PHP+MySQL实现消息队列的注意事项有哪些,下面就是实战案例,一起来看一下. 最近遇到一个批量发送短信的需求,短信接口是第三方提供的.刚开始想 ...

最新文章

  1. java调用项目中的文件_详解eclipse项目中.classpath文件的使用
  2. Java 专业人士必备的书籍和网站列表
  3. 史上超级详细:HashMap源码分析,你了解到源码的魅力了嘛
  4. python错误-Python错误解决
  5. POJ 2230 DFS
  6. PE格式详细讲解11 - 系统篇11|解密系列
  7. Nginx教程--配置
  8. RHCS创建高可用集群apche服务器
  9. 【IDE插件】- XCode6代码注释之VVDocumenter
  10. c语言中关键字static_了解C ++中Static关键字的变体
  11. rocketmq python消息堆积_编写shell脚本监控rocketMQ消息堆积并推送钉钉
  12. jquery全国省市县三级联动
  13. mysqldump导出数据备份 --set-gtid-purged=OFF(简明!!)
  14. 如何截图一张完整的表_wps2016表格太长怎么截图打印?
  15. cocoa 自动键值观察(KVO)--笔录
  16. Salesforce的V2MOM工作法:明确企业在做什么
  17. PHP接口_短信发送接口
  18. 本周c++学习小结和心得
  19. 微信中的黑科技你知道吗?
  20. ARMv8.1-M的一些特性

热门文章

  1. antd 动态添加表单_ZooTeam 拍了拍你,来看看如何设计动态化表单
  2. c mysql备份还原数据库_如何备份和还原MySQL数据库?
  3. mysql 5.02审计_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定
  4. samba升级_潮闻快食 | adidas Originals经典鞋款Samba进化升级,C.E x Nike联名系列全释出!...
  5. python音乐的数据抓取与分析_Python练习之抓取QQ音乐数据
  6. 开发日记-20190925 关键词 试错的一天
  7. local_response_normalization 和 batch_normalization
  8. CSS 框模型——规定了元素框处理元素内容、内边距、边框和外边距的方式
  9. 函数重载和覆盖(重写)的区别
  10. 解决导入第三方图片JS出现403问题