jQuery中队列queue()函数的实例教程


Posted in Javascript onMay 03, 2016

如果当前jQuery对象匹配多个元素:获取队列时,只获取第一个匹配元素上的队列;设置队列(替换队列、追加函数)时,则为每个匹配元素都分别进行设置。
该函数属于jQuery对象(实例)。如果需要移除并执行队列中的第一个函数,请使用dequeue()函数。你也可以使用clearQueue()函数清空指定的队列。

语法
jQuery 1.2 新增该函数。queue()函数具有如下两种用法:

用法一:

jQueryObject.queue( [ queueName ] [, newQueue ] )

如果没有指定任何参数或只指定了queueName参数,则表示获取指定名称的函数队列。如果指定了newQueue参数,则表示使用新的队列newQueue设置(替换)当前队列中的所有内容。

用法二:

jQueryObject.queue( [ queueName ,] callback )

将指定的函数添加到指定的队列(末尾)。
注意:queue()函数的所有设置操作针对当前jQuery对象所匹配的每一个元素;所有读取操作只针对第一个匹配的元素。

参数
请根据前面语法部分所定义的参数名称查找对应的参数。
queueName:可选/String类型指定的队列名称,默认为"fx"(表示jQuery中的标准动画效果队列)。
newQueue:可选/Array类型用于替换当前队列内容的新队列。
callback:Function类型指定的函数,将会追加到队列中。该函数有一个函数参数,调用该参数可以移除并执行队列中的第一个函数。

返回值
queue()函数的返回值是Array/jQuery类型,返回值的类型取决于当前queue()函数执行的是获取操作还是设置操作。
如果queue()函数执行的是设置操作(替换队列、追加函数),则返回当前jQuery对象本身;如果是获取操作,则返回获取到的函数队列(数组)。
如果当前jQuery对象匹配多个元素,读取数据时,queue()函数只以其中第一个匹配的元素为准。

实例:
1. jQuery为我们提供了queue()函数,来把你需要的某些代码插入到某个队列中

$('#test-change1').toggle(function(){
  $('#test-object1').hide('slow').queue(function(next){
    $('#test-object1').appendTo($('#test-goal1'));
    next();
  }).show('slow');

},function(){
  $('#test-object1').hide('slow').queue(function(next){
    $('#test-object1').appendTo($('#test-origin1'));
    next();      
  }).show('slow');
});

2. 自定义队列

$("div").queue("custom", function(next) {
  $('div').css({'background':'red'});
  next();
});

但就这段代码而已,待你真正添加进网页,并且尝试运行,会发现并非“所见即所得”,压根就不会有任何效果。

修改后:

$("div").queue("custom", function(next) {
  $('div').css({'background':'red'});
  next();
})
.dequeue("custom"); //this is the key

一般对与dequeue()的定义是“删除队列中最顶部的函数,并且执行它”。我并不赞同用“删除”这个字眼,而是倾向于“取出”,其实这个函数的功能就好像是一个数据结构中队列的指针,待队列中前一个函数执行完后,取下一个队列最顶端的函数。

3. queue: false

$("#object")
.delay(1000, "fader")
.queue("fader", function(next) {
  $(this).animate({opacity: 0},
    {duration: 1000, queue: false});
  next();
})
.dequeue("fader")
.animate({top: "-=40"}, {duration: 2000})

前1000毫秒,只有控制高度的“fx”队列执行,而后1000毫秒,控制不透明度的“fader”队列和控制高度的“fx”并行。这里的并行就是queue:false

$('#section3a').slideUp(1000)
      .slideDown(1000)
      .animate({width: '50px'}, {duration: 1000, queue: false});

4. 获取队列长度
比如用队列名取得匹配元素的长度:

var $queue=$("div").queue('fx');

很明显,就是取得队列名为'fx'的队列,如果想取得长度的话:

var $length=$('div').queue('fx').length;

注意这里的队列长度只是匹配元素还未运行的队列长度,当动画运行完之后,队列长度会自动归为0

5.替换队列

$('div').queue('fx',function(){
    $('div').slideDown('slow')
         .slideUp('slow')
         .animate({left:'+=100'},4000);
});//定义fx
$('div').queue('fx2',function(){
    $('div').slideDown('fast')
         .slideUp('fast')
         .animate({left:'+=100'},1000);
});//定义fx2

这里定义了两个队列,一个是慢队列,也就是默认的'fx',另一个是快队列'fx2'

当点击某个按钮时:

$('input').click(function(){
  $('div').queue('fx',fx2);
});
Javascript 相关文章推荐
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
js 限制input只能输入数字、字母和汉字等等
Dec 18 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
Nov 30 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
May 02 Javascript
在vue中阻止浏览器后退的实例
Nov 06 Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 Javascript
JavaScript中split与join函数的进阶使用技巧
May 03 #Javascript
总结JavaScript三种数据存储方式之间的区别
May 03 #Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 #Javascript
浅析函数声明和函数表达式——函数声明的声明提前
May 03 #Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 #Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 #Javascript
JavaScript的MVVM库Vue.js入门学习笔记
May 03 #Javascript
You might like
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
详解Python字符串对象的实现
2015/12/24 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
python 函数中的参数类型
2020/02/11 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
检举信的格式及范文
2014/04/04 职场文书
公司建议书怎么写
2014/05/15 职场文书
求职信标题怎么写
2014/05/26 职场文书
2014国庆节标语口号
2014/09/19 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
解决MySQL报“too many connections“错误
2022/04/19 MySQL