WEB开发网
开发学院网页设计JavaScript Jquery源码分析---FX分析 阅读

Jquery源码分析---FX分析

 2010-09-14 13:39:01 来源:WEB开发网   
核心提示: 由于jquery对象支持fast,slow这样的常量来代替具体的speed的数值,第二步就是进行speed的处理,Jquery源码分析---FX分析(5),如果没有提供就提供默认的speed,其代码在jQuery.fx.speeds中speeds:{slow: 600, fast: 200

由于jquery对象支持fast,slow这样的常量来代替具体的speed的数值,第二步就是进行speed的处理。如果没有提供就提供默认的speed。其代码在jQuery.fx.speeds中speeds:{  slow: 600,   fast: 200,   _default: 400},定义了三种形式的速度。

接下来是对在完成的时间执行的complete的回调函数进行包裹。包裹就是看看参数中提供了队列的操作没有。提供了就进行出队列的操作。之后再执行complete的回调函数。

jQuery.fn.dequeue = function(type){
  type = type || "fx";
  return this.each(function(){
    var q = queue(this, type);// 得取type的的值
    q.shift();// 移出一个
    if ( q.length )
      q[0].call( this );
  });
};

jQuery.fn.dequeue根据type取到当前dom元素的queue。先移出一个。再运行queue中的第一个。

Queue

在②处和上一部分都看看参数中提供了队列的操作没有,有就是进行queue的操作。Queue的操作和each的操作是不一样的。

// 实现队列操作,为jQuery对象中的每个元素都加type的属性,值为fn.
queue: function(type, fn){
  // 可能看出支持一个参数的fn或array形式的集合其type为默认的fx的形式。
  if(jQuery.isFunction(type)||( type && type.constructor == Array)) {
      fn = type; type = "fx"; }
  //没有参数时或一个参数是字符的type时就从jquery对象第一个元素的data中取
  //出相对于的type(空就是所有)的队列中的元素(fn)。
  if ( !type || (typeof type == "string" && !fn) )
    return queue( this[0], type );//从queue取出
//把fn保存在jquery对象中的每个元素的data中的对应的type中去。
//对于fn是fn的数组集合,就直接设定data中type为fn的数组
//如果是单个的fn,那么就采用追加的形式追加到data的type的fn数组中。
//如果追加的形式,而且之前数组中没有fn元素。那么就执行这个元素。
return this.each(function(){
  if ( fn.constructor == Array )// 数组的形式
    queue(this, type, fn);// 存储在元素的type属性中
  else {
     queue(this, type).push( fn );
      if ( queue(this, type).length == 1 )  fn.call(this);
      }
    });
 },

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Jquery 源码 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接