API
function isDescendant(parent, child) {
return parent.contains(child);
}
function isStrictDescendant(parent, child) {
return parent !== child && parent.contains(child);
}
Альтернатива: child.closest(selector) если родитель ищете по селектору; или подъём по parentElement.
el.closest('.modal') === modal;
Итог
Node.contains — прямой и читаемый способ.