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