Для этого существует стандартизированная функция: Element.closest . Большинство браузеров, кроме IE11, поддерживают его ( подробности см . На caniuse.com ). Документы MDN также включают полифил на случай, если вам нужно настроить таргетинг на старые браузеры.
Чтобы найти ближайшего tbodyродителя с учетом a, 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");