Для цього існує стандартизована функція: Element.closest . Більшість браузерів, крім IE11, підтримують це ( деталі caniuse.com ). Документи MDN також містять полізаповнення на випадок, якщо вам потрібно націлити на старіші браузери.
Щоб знайти найближчого tbodyбатька, якого thви отримали, ви можете зробити:
th.closest('tbody');
Якщо ви хочете написати функцію самостійно - ось що я придумав:
function findClosestParent (startElement, fn) {
var parent = startElement.parentElement;
if (!parent) return undefined;
return fn(parent) ? parent : findClosestParent(parent, fn);
}
Щоб знайти найближчого батька за назвою тегу, ви можете використовувати його таким чином:
findClosestParent(x, element => return element.tagName === "SECTION");