files/en-us/web/api/element/closest/index.md
{{APIRef("DOM")}}
The closest() method of the {{domxref("Element")}} interface traverses the element and its parents (heading toward the document root) until it finds a node that matches the specified CSS selector.
closest(selectors)
selectors
The closest ancestor {{domxref("Element")}} or itself, which matches the selectors. If there are no such element, null.
SyntaxError {{domxref("DOMException")}}
selectors is not a valid CSS selector.<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>
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>
{{Specifications}}
{{Compat}}
document.createElement(tagName).closest(tagName) will
return null if the element is not first connected (directly or
indirectly) to the context object, for example the {{domxref("Document")}} object in
the case of the normal DOM.