使用选择器获取最接近的父元素(不包括当前元素)

umb*_*987 15 html javascript css

我正在尝试获取元素的最接近的父元素。

看看.closest(),如果选择器与元素匹配,它似乎会返回元素本身:

Closest() 方法遍历 Element 及其父级(指向文档根),直到找到与提供的选择器字符串匹配的节点。将返回自身或匹配的祖先。如果不存在这样的元素,则返回 null。

(重点是我的)

那么,在给定选择器的情况下,获取元素最接近的父元素的最佳方法是什么?

例子

var el = document.getElementById('foo');
var closestParent = el.closest('div');
console.log(closestParent);
Run Code Online (Sandbox Code Playgroud)
<div>root
  <div>level1
    <div id='foo'>level2</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,el.closest('div');返回el自身,而不是与选择器div(level1)匹配的最接近的父级,这正是我所需要的。

我知道在这种情况下我可以简单地执行closestParent.parentElement,但这只是一个示例,我试图弄清楚是否可以避免.closest()返回元素本身。

AKT*_*AKT 23

要排除当前元素,请获取closest()相对于其parentNode的相对值:

var el = document.getElementById('foo');
var closestParent = el.parentNode.closest('div');
console.log(closestParent);
Run Code Online (Sandbox Code Playgroud)