Do tego celu służy standardowa funkcja: Element.closest . Obsługuje ją większość przeglądarek z wyjątkiem IE11 ( szczegóły na caniuse.com ). Dokumenty MDN zawierają również polyfill na wypadek, gdybyś musiał kierować reklamy na starsze przeglądarki.
Aby znaleźć najbliższego tbody
rodzica, który dostaniesz, th
możesz zrobić:
th.closest('tbody');
Jeśli chcesz sam napisać funkcję - oto co wymyśliłem:
function findClosestParent (startElement, fn) {
var parent = startElement.parentElement;
if (!parent) return undefined;
return fn(parent) ? parent : findClosestParent(parent, fn);
}
Aby znaleźć najbliższego rodzica według nazwy tagu, możesz go użyć w następujący sposób:
findClosestParent(x, element => return element.tagName === "SECTION");