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

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

 2010-09-14 13:36:40 来源:WEB开发网   
核心提示: 一般情况,我们不设定inv参数,Jquery源码分析---jQuery类数组的分析(6),那么只要callback函数的返回值不为undefined,””,false,null,0之一就是该元素满足条件,不会被剔除,但是not是建立在于filter的基础之上,它的效

一般情况,我们不设定inv参数,那么只要callback函数的返回值不为undefined,””,false,null,0之一就是该元素满足条件。不会被剔除。

jQuery.multiFilter与jQuery.filter的区别不大。multiFilter支持采用,分隔的selector多表达式方式。

multiFilter : function(expr, elems, not) {
  var old, cur = [];
  while (expr && expr != old) {// 存在且改变
    old = expr;
    var f = jQuery.filter(expr, elems, not);
    expr = f.t.replace(/^s*,s*/, "");
    cur = not ? elems = f.r : jQuery.merge(cur, f.r);
  }
  return cur;
},

jQuery.multiFilter是作筛选之用。和jQuery.filter一样,selector的多表达式也能只是筛选器的组合。以·,#,: ,[,这四种符号做分隔的的表达式。

not也是根据selector来剔除不符合条件的元素,但是not是建立在于filter的基础之上。它的效率会高于filter。

  // 删除与指定表达式匹配的元素
not : function(selector) {
if (selector.constructor == String)// 对于string,就构建[]
   if (isSimple.test(selector))//.class1
   return this.pushStack(jQuery.multiFilter(selector, this, true));
  else// 多表达式要过滤
   selector = jQuery.multiFilter(selector, this);
  
//这里是判断selector是不是集合
var isArrayLike = selector.length
       && selector[selector.length - 1] !== undefined
       && !selector.nodeType;
return this.filter(function() {// 过滤掉return false的元素
    return isArrayLike ?
jQuery.inArray(this, selector) < 0 : this != selector;
       });
  },

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

Tags:Jquery 源码 分析

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