找到最近的有父类的父母

Yem*_*lat 4 recursion jquery

假设我们有以下标记:

<div class="hello">
  <p>
    <a href="#"><span id="start">Start</span></a>
  </p>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有办法找到$('#start')具有类属性的最接近的元素,在dom树上?

澄清:我实际上需要获取一个字符串,其中包含从$('#start')到$(.hello)的完整路径,它将包含所有元素的标记名称,直到基于上面的标记为止 - 它将输出: ' span ap .hello '

您可以使用获取元素标记名称 element.prop('tagName')

tym*_*eJV 10

关于什么

$('#start').closest("[class]");
Run Code Online (Sandbox Code Playgroud)


Aln*_*tak 8

如果您想要最近的元素,包括您开始使用的元素,使用.closest:

$('#start').closest('[class]');
Run Code Online (Sandbox Code Playgroud)

如果要排除起始元素,请使用:

$('#start').parents('[class]').first();
Run Code Online (Sandbox Code Playgroud)

要获得完整匹配路径,请尝试以下操作:

var path = [];
var el = document.getElementById('start');
while (el) {
    if (el.className) {
        path.push('.' + el.className);
        break;
    } else {
        path.push(el.tagName);
    }
    el = el.parentNode;
}
var ancestors = path.join(' ');
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/alnitak/EZWNR/

我使用原生JS,因为jQuery没有AFAIK提供一个简单的方法来选择一个元素及其每个祖先.