10/97

Check if an element is a descendant of another

Assume that we want to find out if the child element is a descendant of the parent element.

1. Use the contains method

const isDescendant = parent.contains(child);

2. Go up from the child until see the parent

// Check if `child` is a descendant of `parent`
const isDescendant = function(parent, child) {
    let node = child.parentNode;
    while (node) {
        if (node === parent) {
            return true;
        }

        // Traverse up to the parent
        node = node.parentNode;
    }

    // Go up until the root but couldn't find the `parent`
    return false;
};

Might be useful