WEB开发网
开发学院网页设计JavaScript Jquery源码分析---构建Jquery的Dom元素 阅读

Jquery源码分析---构建Jquery的Dom元素

 2010-09-14 13:36:44 来源:WEB开发网   
核心提示: 其它如属性(Attribute)选择器,Pseudo Classes都是筛选器,Jquery源码分析---构建Jquery的Dom元素(8),只能附在一个元素或多个元素后面,,find : function(selector) {var elems = jQuery.map(this, f

其它如属性(Attribute)选择器,Pseudo Classes都是筛选器,只能附在一个元素或多个元素后面。,特殊情况就是对于*标签取到元素集进行筛选。

看一个:div.foo:nth-child(odd)[@foo=bar]#aId > a的例子:

à第一步:找到div type选择器的所有元素。

à第二步:在这些元素中找到class为foo的元素。如果没有就根本不要去分析下面的字符。

à第三步:根据:nth-child(odd)找到元素的子孩子元素为偶数的的元素。进一步筛选了。

à第四步:找到[],就是属性筛选器了,根据foo属性值bar来判断集合中还有那些满足条件。

à第五步:在这些元素集合,找到id=aId的元素,进一步筛选。

à第六步:在这些元素集合中找到所有元素对应的子元素类型为a的所有子元素。

à结果:我们可以看到,现在元素是子元素的集合。

讲完了通版的大道理,接下来就是来看看jQuery是怎么实现的:

// 搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。
// 所有搜索都依靠jQuery表达式来完成。这个表达式可以使用CSS1-3的选择器语法来写。
  find : function(selector) {
  var elems = jQuery.map(this, function(elem) {// 找到每个元素的满足的
       return jQuery.find(selector, elem);  });
    return this.pushStack(/[^+>] [^+>]/.test(selector) ? jQuery
       .unique(elems) : elems);// 是不是返回不重复的元素?
  },

这是jquery.fn.init调用的find方法。它只是完成之本本对象集合中每一个元素都调用jQuery.find(selector, elem)方法,组合成新unique集合后构建新jquery对象。最重要的实质性的工作在jQuery.find(selector, elem)完成:

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

Tags:Jquery 源码 分析

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