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 相关文章推荐
DHTML 中的绝对定位
Nov 26 Javascript
js+jquery实现图片裁剪功能
Jan 02 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 Javascript
利用JQuery实现datatables插件的增加和删除行功能
Jan 06 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 jQuery
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
javascript递归函数定义和用法示例分析
Jul 22 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 Javascript
openlayers4实现点动态扩散
Aug 17 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
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
elgg 获取文件图标地址的方法
2010/03/20 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
我的Node.js学习之路(一)
2014/07/06 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
在Python中使用next()方法操作文件的教程
2015/05/24 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python set常用操作函数集锦
2017/11/15 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
python代码区分大小写吗
2020/06/17 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
求职简历推荐信范文
2013/12/02 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
医德医风自我评价
2014/09/19 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis