jQuery队列操作方法实例

 更新时间:2014年06月11日 08:36:46   作者:  
这篇文章主要介绍了jQuery队列操作方法实例,总结出了一个简洁优雅的队列控制方法,需要的朋友可以参考下

jQuery核心中, 有一组队列控制方法, 这组方法由queue()/dequeue()/clearQueue()三个方法组成, 它对需要连续按序执行的函数的控制可以说是简明自如, 主要应用于animate ()方法, ajax以及其他要按时间顺序执行的事件中.

先解释一下这组方法各自的含义.

queue(name,[callback]): 当只传入一个参数时, 它返回并指向第一个匹配元素的队列(将是一个函数数组,队列名默认是fx); 当有两个参数传入时, 第一个参数还是默认为fx的的队列名, 第二个参数又分两种情况, 当第二个参数是一个函数时, 它将在匹配的元素的队列最后添加一个函数. 当第二个参数是一个函数数组时,它将匹配元素的队列用新的一个队列来代替(函数数组).可能, 这个理解起来有点晕.

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. 初始执行第一个函数.

至于clearQueue()方法,就不多说了, 演示中停止按钮调用的就是clearQueue()方法,当然你还可以用queue()方法直接将现在的函数列队替换成[]空数组实现(个人比较推荐空数组替换.,更直观).

相关文章

  • Jquery实现获取子元素的方法分析

    Jquery实现获取子元素的方法分析

    这篇文章主要介绍了Jquery实现获取子元素的方法,结合实例形式分析了jQuery针对页面元素的查找、获取相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • jquery实现简单的swiper轮播预览原图

    jquery实现简单的swiper轮播预览原图

    这篇文章主要为大家详细介绍了jquery实现简单的swiper轮播预览原图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • jquery实现拖拽table表头改变列宽

    jquery实现拖拽table表头改变列宽

    这篇文章主要为大家详细介绍了jquery实现拖拽table表头改变列宽,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • jQuery实现3D文字特效的方法

    jQuery实现3D文字特效的方法

    这篇文章主要介绍了jQuery实现3D文字特效的方法,通过鼠标与css样式来实现文字特效的技巧,需要的朋友可以参考下
    2015-03-03
  • JSON JQUERY模板实现说明

    JSON JQUERY模板实现说明

    用JSON从服务器端返回数据已是大家公认的标准,因为它短小精悍,使用方便.
    2010-07-07
  • jquery分页优化操作实例分析

    jquery分页优化操作实例分析

    这篇文章主要介绍了jquery分页优化操作,在前文jQuery分页显示的基础上实现了避免频繁查询的相关优化操作技巧,需要的朋友可以参考下
    2019-08-08
  • jQuery表单验证功能实例

    jQuery表单验证功能实例

    这篇文章主要介绍了jQuery表单验证功能,涉及jquery针对表单项的读取与正则判定技巧,非常具有实用价值,需要的朋友可以参考下
    2015-08-08
  • 基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果

    基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果

    最近基于jQuery和Bootstrap框架实现了一个仿知乎动态列表的前端效果,基本实现了和知乎动态列表相同的效果,下面小编通过本文给大家分享实现思路及代码,对bootstrap 实现仿知乎前端动态列表效果感兴趣的朋友一起看看吧
    2016-11-11
  • jquery动态加载js/css文件方法(自写小函数)

    jquery动态加载js/css文件方法(自写小函数)

    jquery自带的getSrcript文件只能动态加载js代码,但不能加载css,后来自己写了一个可加载js与css的程序
    2014-10-10
  • jQuery中$(function() {});问题详解

    jQuery中$(function() {});问题详解

    $(function() {});是$(document).ready(function(){ })的简写,最早接触的时候也说$(document).ready(function(){ })这个函数是用来取代页面中的window.onload;但是今天发现 好像不是这样回事!是在做一个页面载入效果时发现的!
    2015-08-08

最新评论