純粋な JavaScript で、特定のクラスを持つツリーの最も近い要素の祖先を見つけるにはどうすればよいでしょうか。たとえば、次のようなツリーの場合:
<div class="far ancestor">
<div class="near ancestor">
<p>Where am I?</p>
</div>
</div>
次に、div.near.ancestor
でこれを試してp
、 を検索しますancestor
。
ベストアンサー1
更新: サポートされるようになりましたほとんどの主要ブラウザで
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;
}