如何在纯JavaScript 中找到与具有特定类的树最接近的元素的祖先?例如,在像这样的树中:

<div class="far ancestor">
    <div class="near ancestor">
        <p>Where am I?</p>
    </div>
</div>

然后,如果要在div.near.ancestor上尝试并搜索p,则需要ancestor

最佳答案

更新:现在支持in most major browsers

document.querySelector("p").closest(".near.ancestor")

请注意,这可以匹配选择器,而不仅仅是类

https://developer.mozilla.org/en-US/docs/Web/API/Element.closest

对于不支持closest()但具有matches()的旧版浏览器,可以构建类似于@rvighne的类匹配的选择器匹配:
function findAncestor (el, sel) {
    while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el,sel)));
    return el;
}

10-06 00:42