查找最接近的匹配节点
从给定的node
开始查找最接近的匹配节点。
- 使用
for
循环和Node.parentNode
从给定的node
向上遍历节点树。 - 使用
Element.matches()
检查任何给定的元素节点是否与提供的selector
匹配。 - 如果找不到匹配的节点,则返回
null
。
const findClosestMatchingNode = (node, selector) => {
for (let n = node; n.parentNode; n = n.parentNode)
if (n.matches && n.matches(selector)) return n;
return null;
};
findClosestMatchingNode(document.querySelector('span'), 'body'); // body