查找最接近的匹配节点

从给定的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