查找具有特定类的最近祖先元素
2022-08-29 23:49:58
在纯JavaScript中,我如何找到最接近具有特定类的树的元素的祖先?例如,在这样的树中:
<div class="far ancestor">
<div class="near ancestor">
<p>Where am I?</p>
</div>
</div>
然后我想如果我尝试这个在并搜索.div.near.ancestor
p
ancestor
在纯JavaScript中,我如何找到最接近具有特定类的树的元素的祖先?例如,在这样的树中:
<div class="far ancestor">
<div class="near ancestor">
<p>Where am I?</p>
</div>
</div>
然后我想如果我尝试这个在并搜索.div.near.ancestor
p
ancestor
更新:现在大多数主流浏览器都支持
document.querySelector("p").closest(".near.ancestor")
请注意,这可以匹配选择器,而不仅仅是类
https://developer.mozilla.org/en-US/docs/Web/API/Element.closest
对于不支持但有选择器的旧版浏览器,可以构建类似于@rvighne类匹配的选择器匹配:closest()
matches()
function findAncestor (el, sel) {
while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el,sel)));
return el;
}