我想要一个函数,该函数可以从DOMElement
向上扫描DOM,还可以在上升时扫描每个父级的子级。
它必须继续前进,直到找到与参数中接收到的选择器匹配的任何<element>
。选择器必须是任何类型的有效CSS选择器。
还需要使用纯JS(无jQuery)完成
答案 0 :(得分:0)
我最终制作了该功能的修订版I found on this site。您可以根据需要使用此功能,按比例放大,自己索取它。
GetClosest = function (elem, selector) {
for (; elem && elem !== document.body; elem = elem.parentNode) {
// If the elem matches at first iteration.
if(elem.matches(selector)) {
return elem;
} else {
// Scans all the childs of current iterated element (always higher in DOM until found).
// If one matches the selector it'll stop and return it.
child = elem.parentNode.firstChild;
do {
if(child.nodeType === 3) continue; // text node
if(child.matches(selector)) return child;
} while (child = child.nextElementSibling);
}
}
return null;
};