Skip to main content

JS 判断是否包含节点

一、递归判断

通过递归逐层判断:

/**
* 判断节点是否在指定包裹层中
* @param node 要判断的节点
* @param parent 是否在该容器中
* @returns true 为在反之不在
*/
const hasParent = (node: HTMLElement, parent: HTMLElement | null) => {
while (node) {
if (node === parent) {
return true
}
node = node.parentNode as HTMLElement
}
return false
}

二、Node.contains

通过 Node.contains 方法判断,语法如下:

node.contains(otherNode)

如果 otherNodenode 的后代节点或是 node 节点本身。则返回 true, 否则返回 false

封装如下:

/**
* 判断节点是否在指定包裹层中
* @param node 要判断的节点
* @param parent 是否在该容器中
* @returns true 为在反之不在
*/
const hasParent = (node: HTMLElement, parent: HTMLElement) => {
return parent.contains(node)
}