在jQuery中选择最深的孩子

前端之家收集整理的这篇文章主要介绍了在jQuery中选择最深的孩子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有一种cheep方法来选择元素中最深的孩子?

例:

<div id="SearchHere">
  <div>
    <div>
      <div></div>
    </div>
  </div>
  <div></div>
  <div>
    <div>
      <div>
        <div id="selectThis"></div>
      </div>
    </div>
  </div>
  <div>
    <div></div>
  </div>
</div>

解决方法

编辑:这可能比我原来的答案更好一些:

示例:http://jsfiddle.net/patrick_dw/xN6d5/5/

var $target = $('#SearchHere').children(),$next = $target;

while( $next.length ) {
  $target = $next;
  $next = $next.children();
}

alert( $target.attr('id') );

或者这甚至更短一些:

示例:http://jsfiddle.net/patrick_dw/xN6d5/6/

var $target = $('#SearchHere').children();

while( $target.length ) {
  $target = $target.children();
}

alert( $target.end().attr('id') ); // You need .end() to get to the last matched set

原始答案:

这似乎有效:

示例:http://jsfiddle.net/xN6d5/4/

var levels = 0;
var deepest;

$('#SearchHere').find('*').each(function() {
    if( !this.firstChild || this.firstChild.nodeType !== 1  ) {
        var levelsFromThis = $(this).parentsUntil('#SearchHere').length;
        if(levelsFromThis > levels) {
            levels = levelsFromThis;
            deepest = this;
        }
    }
});

alert( deepest.id );

如果你知道最深的是一个标签(或别的东西),你可以通过用.find(‘div’)替换.find(‘*’)来加快速度。

编辑:如果当前元素没有firstChild或者如果它没有,则firstChild不是1类节点,因此更新为仅检查长度。

原文链接:https://www.f2er.com/jquery/183142.html

猜你在找的jQuery相关文章