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 相关文章推荐
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
document.createElement()用法
Mar 13 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
用Jquery实现滚动新闻
Feb 12 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
用JS实现简单的登录验证功能
Jul 28 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
Sep 10 Javascript
vue.js中created方法作用
Mar 30 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
对vue生命周期的深入理解
Dec 03 Vue.js
react如何快速设置文件路径别名
Apr 28 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
Python Series从0开始索引的方法
2018/11/06 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python global关键字的用法详解
2019/09/05 Python
Python集合操作方法详解
2020/02/09 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
入党自我评价范文
2014/02/02 职场文书
企业授权委托书范本
2014/09/22 职场文书
内勤岗位职责范本
2015/04/13 职场文书
郭明义观后感
2015/06/08 职场文书
荒岛余生观后感
2015/06/09 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
《观潮》教学反思
2016/02/17 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python