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和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 Javascript
利用毫秒减值计算时长的js代码
Sep 22 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
May 09 Javascript
JS生成随机字符串的多种方法
Jun 10 Javascript
node.js中的fs.lstatSync方法使用说明
Dec 16 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
js中常用的Math方法总结
Jan 12 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
Jul 20 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页面局部刷新功能的实现小结
2013/06/21 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
浅析VUE防抖与节流
2020/11/24 Vue.js
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Python内置函数reversed()用法分析
2018/03/20 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
python数据爬下来保存的位置
2020/02/17 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
基于Python正确读取资源文件
2020/09/14 Python
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
在校硕士自我鉴定
2014/01/23 职场文书
元旦晚会邀请函
2014/01/27 职场文书
中班中秋节活动反思
2014/02/18 职场文书
医德医魂心得体会
2014/09/11 职场文书
就业推荐表导师评语
2014/12/31 职场文书
《确定位置》教学反思
2016/02/18 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL