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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
js比较日期大小的方法
May 12 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
js简单实现图片延迟加载的方法
Jul 19 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
layui自定义ajax左侧三级菜单
Jul 26 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
jquery实现拖拽小方块效果
Dec 10 jQuery
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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
详解Python中expandtabs()方法的使用
2015/05/18 Python
简单介绍Python中的readline()方法的使用
2015/05/24 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
单位门卫岗位职责
2013/12/20 职场文书
酒店个人求职信范文
2014/01/25 职场文书
教学实习自我评价
2014/01/28 职场文书
超市创业计划书
2014/04/24 职场文书
司机工作自我鉴定
2014/09/19 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers