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

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

 2010-09-14 13:36:44 来源:WEB开发网   
核心提示: 取名dir,我们会想到Dos的Dir操作,Jquery源码分析---构建Jquery的Dom元素(5),其实我们解释为direction(方向)更好理解,它一直会朝着方向走到尽头,然后从这个后续的兄弟(们)排除一个指的元素,// 从包含n元素开始的所有后续兄弟,如parentNode的方向

取名dir,我们会想到Dos的Dir操作。其实我们解释为direction(方向)更好理解。它一直会朝着方向走到尽头。如parentNode的方向。它会把取的父节点作为当前节点再取其父节点。就是所有的父辈节点(们)。对于nextSibling、previousSibling、lastChild,firstChild都一样。只要取到的元素有dir这个方向(属性)的话,就一直取下去。每一步都会把取到的元素保存起来。这个函数是对于要取‘一条线’形式的Dom文档树的所有元素是有很有用的。从一个元素出发,其parentNode可以画一条线,lastChild也可以画一条线。当然nextSibling不也类外。

Dir是取某一个方向上所有的元素,有的时候,我们要取的是某一个方向上的第几个元素,如我们找到其爷爷节点。那就是某一个方向上的第二个元素。下面的nth就是实现这个功能。

// 取某个方向上的第几个元素。Result是第几个
nth : function(cur, result, dir, elem) {
  result = result || 1;
  var num = 0;
  for (;cur; cur = cur[dir])
    if (cur.nodeType == 1 && ++num == result)
      break;
  return cur;
},

Nth与dir在一个方向有点不同的地方,就是dir不包含自身,而nth包含自身,如果result是1的话,那是自身的元素。如果没有找到就返回空(有可能是undifined,或null)。

接下来的sibling就比较简单,但是用途也会少很多。它实现从一个元素(包括自身)找到其所有后续兄弟(们),然后从这个后续的兄弟(们)排除一个指的元素。

// 从包含n元素开始的所有后续兄弟,但不包含elem。
sibling : function(n, elem) {
  var r = [];
  for (;n; n = n.nextSibling) {
    if (n.nodeType == 1 && n != elem)
      r.push(n);
  }
  return r;
}

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

Tags:Jquery 源码 分析

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