WEB开发网
开发学院网页设计JavaScript Jquery源码分析---jQuery类数组的分析 阅读

Jquery源码分析---jQuery类数组的分析

 2010-09-14 13:36:40 来源:WEB开发网   
核心提示: 该静态方法支持第一个参数的类数组(数组)或对象,是数组就对每个元素进行callback的操作,Jquery源码分析---jQuery类数组的分析(9),如果是对象,就是对每个属性值进行callback的操作,// 回到最近的一个"破坏性"操作之前,即,这个callbac

该静态方法支持第一个参数的类数组(数组)或对象。是数组就对每个元素进行callback的操作。如果是对象,就是对每个属性值进行callback的操作。这个callback回调函数的格式如下:callback:function(index,value)。Index是索引号,value是数组的index对应的元素或对象的第index个处理的属性。如果使用args参数,那callback回调函数的格式如下:callback:function(args)。Args是给回调函数设定参数。再看一下jQuery对象的each。它的第二个参数args就是采用传入的args直接进行给callback设定参数,而不是默认提集合中index和对应的元素,但执行的次数还是集合的length次。

而Jquery的map函数则是将一组元素转换成其他数组(通过回调函数返回值组成的)

// 将一组元素转换成其他数组 然后根据这个数组构建新的jquery对象。
  map : function(callback) {
    return this.pushStack(jQuery.map(this, function(elem, i) {
      return callback.call(elem, i, elem);
    }));
  },

这个函数首先通过jQuery.map(this, function(elem, i){}来把this的jQuery对象集合的每个元素当作回调函数的elem的参数传到回调函数中。而这个回调函数又执行实例方法的map : function(callback)中callback函数,也就是jQuery.map中的回调仅仅是传参代理的功能。jQuery.map通过代理的回调来取得转换而成的元素集合。

接下来就是采用pushStack把这集合的元素构建成新的jQuery对象并返回,同时保存原jQuery对象的引用。

看下Map的静态方法:

  // 返回对elems每个元素都进行操作的callback函数的返回值的集合。
    map : function(elems, callback) {
      var ret = [];    
      for (var i = 0, length = elems.length;i < length; i++) {
       var value = callback(elems[i], i);
       if (value != null)//说明转换的集合的个数可能少于原来的集合
         ret[ret.length] = value;
      }
      return ret.concat.apply([], ret);//采用array的concat实现
    }

Map的静态方法返回每个callback返回的元素组成的数组。

4.3 其它操作

对于Jquery对象的集合操作,还有着一些其它的方法,如判断集合的元素是否满足某一个表达式或条件,满足就返回真。在上面的集合操作中,我们经常把老的集合pushStack。那么又如何取得到进栈的这个老集合呢?

Jquery提供了is方法来完成对集合的元素判断

// 用一个表达式来检查当前选择的元素集合,
//如果其中至少有一个元素符合这个给定的表达式就返回true。
is : function(selector) {
   return !!selector && jQuery.multiFilter(selector, this).length > 0;
  },

!!可以把任何元素转换成boolean型。开发者经常使用的判断是对class的判断,于是提供了一个便利的操作:

  // 检查当前的元素是否含有某个特定的类,如果有,则返回true
  hasClass : function(selector) {
    return this.is("." + selector);
  },

End就是找到上一个jquery对象。

// 回到最近的一个"破坏性"操作之前。即,将匹配的元素列表变为前一次的状态。
  end : function() {
    return this.prevObject || jQuery([]);
  },

文章来源:http://jljlpch.javaeye.com/category/37744

上一页  4 5 6 7 8 9 

Tags:Jquery 源码 分析

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