jQuery源码分析-08队列 Queue
作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com
声明:本文为原创文章,如需转载,请注明来源并保留原文链接。
读读写写,不对的地方请告诉我,多多交流共同进步,本章的的PDF下载在最后。
前记:
国庆给自己放了个安静的长假,日游杭州大小景点,夜宿西湖边上,于大街小巷中遍尝美味小吃,没有电脑没有网络,这样的日子真是是好日子啊;回京开始工作了,编程是我的兴趣,虽然变成了工作,但是享受的心态要继续保持下去。
白天工作,不管忙不忙,jQuery源码分析系列只能放在晚上写,经常看的朋友兴许也注意到更新时间一般是凌晨,经常觉的挺累的,想今天算了吧上床睡觉明天再说吧,但还是坚持下来了,我会尽量要求自己1-2天发布一篇。刚开始写的时候,有些担心写出来的东西会幼稚肤浅或讲不清楚,有些地方也确实是这样,这个假期让我想明白了很多事,以后的文章欢迎各位道友拍各种砖和石头,用力点,不要停。
8. 队列 Queue
8.1 概述
队列是一种特殊的线性表,只允许在表的前端(队头)进行删除操作(出队),在表的后端(队尾)进行插入操作(入队)。队列的特点是先进先出(FIFO-first in first out),即最先插入的元素最先被删除。
jQuery提供了jQuery.queue/dequeue和jQuery.fn.queue/dequeue,实现对队列的入队、出队操作。不同于队列定义的是,jQuery.queue和jQuery.fn.queue不仅执行出队操作,返回队头元素,还会自动执行返回的队头元素。
8.2 用途
在jQuery源码中,仅用于动画模块,这里入队的函数的功能是:
l 遍历要动画的属性,修正要执行的动画动作,修正/备份属性
l 遍历要动画的属性,为每一个属性创建jQuery.fx对象,计算起始值和结束值,调用fx对象的custom开始动画
看看源码:
/**
* .animate( properties, [duration], [easing], [complete] )
*
* .animate( properties, options )
*
* animate做了三件事:
* 1. 调用jQuery.speed修正传入的参数(时间、算法、回调函数)
* 2. 遍历要动画的属性,修正要执行的动画动作,修正/备份属性
* 3. 遍历要动画的属性,为每一个属性创建jQuery.fx对象,计算起始值和结束值,调用fx对象的custom开始动画
*/
animate: function( prop, speed, easing, callback ) {
var optall = jQuery.speed(speed, easing, callback); // 修正参数
// 如果是空对象,则直接运行callback
if ( jQuery.isEmptyObject( prop ) ) {
return this.each( optall.complete, [ false ] );
}
// Do not change referenced properties as per-property easing will be lost
// 复制一份prop,不改变原有的属性
prop = jQuery.extend( {}, prop );
// queue为false,动画立即开始,否则则放入动画队列
return this[ optall.queue === false ? "each" : "queue" ](function() {
// XXX 'this' does not always have a nodeName when running the
// test suite
if ( optall.queue === false ) {
jQuery._mark( this );
}
var opt = jQuery.extend( {}, optall ), // 复制一份
isElement = this.nodeType === 1,
hidden = isElement && jQuery(this).is(":hidden"), // 是否隐藏
name, val, p,
display, e,
parts, start, end, unit;
相关新闻>>
- 发表评论
-
- 最新评论 更多>>