How to Get the Closest Parent Element By Tag in JavaScript
How can we get the closest parent element by tag selector in JavaScript?
Suppose we have an event listener that calls the following handler()
function.
const handler = (e) => {
// Get closest parent element
}
Find closest parent element
We can easily get the closest parent element by selector using closest()
.
const handler = (e) => {
const element = e.target;
let c = element.closest("div");
}
However, closest()
will check the current element as well, so if the current element is also a div
, it will return the current element.
Ignore the current element
In order to ignore the current element, we can call closest()
on the parent instead of the current.
const handler = (e) => {
const element = e.target.parentElement;
let c = element.closest("div");
}
Property ‘parentElement’ does not exist on type ‘EventTarget’
If we’re using TypeScript, we might run into an error where parentElement
is not recognized on the HTML element.
Property 'parentElement' does not exist on type 'EventTarget'.
We can fix this simply by casting our DOM element to an HTMLElement
.
const handler = (e: Event) => {
const element = (e.target as HTMLElement).parentElement;
let c = element.closest("div");
}
This solution is specifically for
EventTarget
errors. Unfortunately, there are many other common “Property does not exist” errors in TypeScript.