J'ai pensé fournir un exemple beaucoup plus robuste, également en typescript, mais qui serait facile à convertir en pur javascript. Cette fonction interroge les parents en utilisant soit l'ID comme "#my-element" ou la classe ".my-class" et contrairement à certaines de ces réponses, elle gère plusieurs classes. J'ai trouvé que j'ai nommé certains éléments de manière similaire et donc les exemples ci-dessus trouvaient les mauvaises choses.
function queryParentElement(el:HTMLElement | null, selector:string) {
let isIDSelector = selector.indexOf("#") === 0
if (selector.indexOf('.') === 0 || selector.indexOf('#') === 0) {
selector = selector.slice(1)
}
while (el) {
if (isIDSelector) {
if (el.id === selector) {
return el
}
}
else if (el.classList.contains(selector)) {
return el;
}
el = el.parentElement;
}
return null;
}
Pour sélectionner par nom de classe :
let elementByClassName = queryParentElement(someElement,".my-class")
Pour sélectionner par ID :
let elementByID = queryParentElement(someElement,"#my-element")