jQuery源码分析-08队列 Queue

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 14:59 点击:

作者: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;

 

 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Gb2312转utf-8编码的方法(vbs+js)
    • 如何使用Ajax技术开发Web应用程序(1)
    • js跳转路径问题
    • JavaScript模仿桌面窗口
    • 用js检测两个线段是否相交
    • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
    • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
    • 我是如何去了解jquery的(六),案例之幻灯片轮换
    • Jquery封装幻灯片效果
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1