元素: closest() 方法

closest()Element 接口的一种方法,它会遍历元素及其父级(朝向文档根节点),直到找到与指定 CSS 选择器 匹配的节点。

语法

js
closest(selectors)

参数

selectors

一个有效的 CSS 选择器 字符串,用于匹配 Element 及其祖先。

返回值

selectors 匹配的最近的祖先 Element 或自身。如果不存在这样的元素,则为 null

异常

SyntaxError DOMException

如果 selectors 不是有效的 CSS 选择器,则会抛出该异常。

示例

HTML

html
<article>
  <div id="div-01">
    Here is div-01
    <div id="div-02">
      Here is div-02
      <div id="div-03">Here is div-03</div>
    </div>
  </div>
</article>

JavaScript

js
const el = document.getElementById("div-03");

// the closest ancestor with the id of "div-02"
console.log(el.closest("#div-02")); // <div id="div-02">

// the closest ancestor which is a div in a div
console.log(el.closest("div div")); // <div id="div-03">

// the closest ancestor which is a div and has a parent article
console.log(el.closest("article > div")); // <div id="div-01">

// the closest ancestor which is not a div
console.log(el.closest(":not(div)")); // <article>

规范

规范
DOM 标准
# ref-for-dom-element-closest①

浏览器兼容性

BCD 表格仅在浏览器中加载

兼容性说明

  • 在 Edge 15-18 中,document.createElement(tagName).closest(tagName) 如果元素未首先连接到上下文对象(直接或间接),例如在正常 DOM 的情况下连接到 Document 对象,则将返回 null

另请参阅