我想我会提供一个更健壮的例子,也在打字稿中,但它很容易转换为纯 javascript。此函数将使用诸如“#my-element”之类的 ID 或类“.my-class”查询父母,并且与其中一些答案不同,它将处理多个类。我发现我命名了一些类似的东西,所以上面的例子找到了错误的东西。
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;
}
按类名选择:
let elementByClassName = queryParentElement(someElement,".my-class")
按 ID 选择:
let elementByID = queryParentElement(someElement,"#my-element")