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

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

 2010-09-14 13:36:40 来源:WEB开发网   
核心提示: 对于元素的定位,jquery提供了index方法:/ 找到elem在本jquery对象的位置(index)index : function(elem) { var ret = -1; return jQuery.inArray( // 如是jQuery对象就取第一个元素elem && el

对于元素的定位,jquery提供了index方法:

/ 找到elem在本jquery对象的位置(index)
  index : function(elem) {
    var ret = -1;
    return jQuery.inArray( // 如是jQuery对象就取第一个元素
       elem && elem.jquery ? elem[0] : elem, this);
  },
  
// 判断elem元素在array中的位置(index) 静态方法
  inArray : function(elem, array) {
      for (var i = 0, length = array.length;i < length; i++)
       // Use === because on IE, window == document
       if (array[i] === elem)
         return i;
      return -1;
    },

inArray是jQuery的静态方法,而index是通过调用inArray来实现其定位的功能。Index的函数支持的参数可以是jQuery对象或Dom元素,而inArray则是实用方法,支持任何的元素。

4.2.2元素的复制及追加

Jquery提供了如数组中slice复制的功能的方法,还提供类似concat的静态方法merge。Slice是通过Array中slice来实现的:

 / 代理数组的slice,同样的操作。
  slice : function() {
    return this.pushStack(Array.prototype.slice.apply(this, arguments));
  },

它返回生成新的jQuery对象。这个对象的集合就是要复制后的集合。对于merge,它是静态方法,实现把第二个元素追加到第一个参数的数组中。

// 把second 元素追加到first的数组中。
    merge : function(first, second) {
   // We have to loop this way because IE & Opera overwrite the length
   // expando of getElementsByTagName
    var i = 0, elem, pos = first.length;
    // Also, we need to make sure that the correct elements are being
    // returned (IE returns comment nodes in a '*' query)
      if (jQuery.browser.msie) {
       while (elem = second[i++])
         if (elem.nodeType != 8)
           first[pos++] = elem;
  
      } else
       while (elem = second[i++])
         first[pos++] = elem;
  
      return first;
    },
  
// 把与表达式匹配的元素添加到jQuery对象中。array(-like)的集合也可以追加进来
  add : function(selector) {
    return this.pushStack(jQuery.unique(jQuery.merge(this.get(),
       typeof selector == 'string' ? jQuery(selector) : jQuery
           .makeArray(selector))));
  },
// 把先前jQuery对象的所有元素加到当前的jQuery对象之中
  andSelf : function() {
    return this.add(this.prevObject);
  },

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

Tags:Jquery 源码 分析

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