Die Lösung von @rvighne funktioniert gut, aber wie in den Kommentaren identifiziert, haben sowohl ParentElement
als auch ClassList
Kompatibilitätsprobleme. Um es kompatibler zu machen, habe ich Folgendes verwendet:
function findAncestor (el, cls) {
while ((el = el.parentNode) && el.className.indexOf(cls) < 0);
return el;
}
parentNode
-Eigenschaft anstelle der parentElement
-Eigenschaft
indexOf
-Methode auf der className
-Eigenschaft anstelle der contains
-Methode auf der classList
-Eigenschaft.
Natürlich sucht indexOf einfach nach dem Vorhandensein dieses Strings, es ist ihm egal, ob es der komplette String ist oder nicht. Wenn Sie also ein anderes Element mit der Klasse 'ancestor-type' hätten, würde es immer noch als das Wort 'ancestor' gefunden werden, wenn dies ein Problem für Sie ist, können Sie vielleicht regexp verwenden, um eine genaue Übereinstimmung zu finden.