在 DOM 中,如何判定 a 元素是否是 b 元素的子元素?
参考答案:
在 DOM 中,可以使用 Node.contains() 或 Node.compareDocumentPosition() 方法判断元素之间的包含关系。
方法一:contains
js
b.contains(a)说明:当 a 是 b 的子节点(包括后代)时,返回 true,否则返回 false。
js
const a = document.querySelector('#child');
const b = document.querySelector('#parent');
console.log(b.contains(a)); // true 表示 a 是 b 的子元素或后代方法二:compareDocumentPosition
js
(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_CONTAINED_BY) !== 0说明:如果 a 被 b 包含(即 a 是 b 的后代节点),返回 true。
题目要点:
- 推荐使用
b.contains(a),语义清晰,兼容性好。 compareDocumentPosition更细粒度,适合需要精确判断各种节点关系的场景。