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 相关文章推荐
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
JS实现简单的顶部定时关闭层效果
Jun 15 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
Jul 24 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
JS实现网站吸顶条
Jan 08 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 Javascript
vue组件是如何解析及渲染的?
Jan 13 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
php 保留小数点
2009/04/21 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
JS实现的全排列组合算法示例
2017/10/09 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
对python多线程与global变量详解
2018/11/09 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
出国导师推荐信
2014/01/16 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
医院院务公开实施方案
2014/05/03 职场文书
12岁生日演讲稿
2014/05/14 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang