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 相关文章推荐
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
javascript 循环读取JSON数据的代码
Jul 17 Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 jQuery
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
javascript填充默认头像方法
Feb 22 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 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实现Ftp用户的在线管理的代码
2007/03/06 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python中的getopt函数使用详解
2015/07/28 Python
Python之py2exe打包工具详解
2017/06/14 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
基督教婚礼主持词
2014/03/14 职场文书
委托书模板
2014/04/04 职场文书
代领报检证委托书范本
2014/10/11 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
唐山大地震的观后感
2015/06/05 职场文书
小平小道观后感
2015/06/09 职场文书
庆元旦主持词
2015/07/06 职场文书
服务行业标语口号
2015/12/26 职场文书
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS