Skip to content

How to check if an element is a descendant of another

New Courses Coming Soon

Join the waiting lists

I had the need to find out of an element I got via a click event was a descendant of a particular parent element.

I assigned an id to that parent, and I checked if the clicked element belonged to its child elements using this loop:

const isDescendant = (el, parentId) => {
  let isChild = false

  if ( === parentId) { //is this the element itself?
    isChild = true

  while (el = el.parentNode) {
    if ( == parentId) {
      isChild = true
  return isChild

document.addEventListener('click', event => {
  const parentId = 'mycontainer'

  if (isDescendant(, parentId)) {
    //it is a descendant, handle this case here
  } else {
    //it's not a descendant, handle this case here

In the while loop we use the assignment operator = to iterate until there’s no parent node anymore, in that case el.parentNode returns null and the while loop ends.

It’s a way to go “up” in the elements tree until it finishes.

→ Get my JavaScript Beginner's Handbook
→ Read my JavaScript Tutorials on The Valley of Code
→ Read my TypeScript Tutorial on The Valley of Code

Here is how can I help you: