当前位置:  开发笔记 > 编程语言 > 正文

jQuery中最近的祖先节点

如何解决《jQuery中最近的祖先节点》经验,为你挑选了2个好方法。

在我的javascript体验中,我发现这是一个非常常见的任务"搜索具有某些条件的元素的最近祖先(标记名称,类,...)".jquery的parents()方法可以完成这项工作吗?parent()的返回元素的顺序是可预测的吗?从上到下还是从下到上?目前我使用这个实用功能:

function ancestor(elem, selector) {
  var $elem = $( elem ).parent();
  while( $elem.size() > 0 ) {
    if( $elem.is( selector ) ) 
    return $elem;
    else
       $elem = $elem.parent();
  }
  return null;
}

有人能告诉我是否有聪明的方法来完成这项工作?



1> nickf..:

编辑:自jQuery 1.3以来,这已经作为closest()函数内置.例如:$('#foo').closest('.bar');


是的 - parents()遍历树.

$('#d').parents("div:first"); 将选择div b.


幸运的是,jQuery团队从那时起就用`wontfix`关闭了这张票.所以.parents()应该再次被认为是稳定的.
请注意,John Resig计划更改.parents()以按源顺序返回元素.在论坛帖子围绕返回集合中的元素顺序转换后,请参阅John自己提交的这个错误:http://bugs.jquery.com/ticket/5994

2> Borgar..:

加入@ nickf的答案:

jQuery 1.3简化了这个任务closest.

鉴于DOM:

你可以做:

$('#d').closest("div"); // returns [ div#b ]

[ Closest返回一组]元素,其中包含与指定选择器匹配的最接近的父元素,包括起始元素.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有