jquery - 在 jQuery 中选择最深的子级

标签 jquery css-selectors

有没有一种便宜的方法来选择元素的最深子元素?

示例:

<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('*') 替换为 .find('div ') 例如。

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

关于jquery - 在 jQuery 中选择最深的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787924/

相关文章:

javascript - 顶部的粘性标题更改颜色

javascript - 使用 jquery 在选择框中设置特定选项

CSS 选择直系兄弟链

java - 如何仅使用属性来定位 Selenium 中的元素,而不管属性包含什么值

css - 如果有一个 --> .content p, .content ul, .content li, .content a,什么是 SASS 方法?

javascript - 网页设计师应该知道 JQuery 吗?

javascript - 图片未在 chrome 中加载

javascript - 保存动态创建的 jQuery 连接可排序列表的顺序

html - 如何使用 css 选择器查找不在一个 div 内的所有输入?

jquery - 用于类/id 选择的 jQuery 轻量级替代方案