PS:尊重原创,转载请注明来自http://www.cnblogs.com/Raoh/p/js_compareDocumentPosition_between_two_node.html
使用compareDocumentPosition方法比较两个节点,将会返回描述它们在文档中位置的整数。
二进制值 | 枚举值 | 位置信息 |
000000 | 0 | 元素一致 |
000001 | 1 | 没有关系,两个节点不属于同一个文档 |
000010 | 2 | 节点 A 在节点 B 后面 |
000100 | 4 | 节点 A 在节点 B 前面 |
001000 | 8 | 节点 A 位于 节点 B 内部 |
010000 | 16 | 节点 A 包含节点 B |
100000 | 32 | 没有关系,或是两个节点是同一元素的两个属性 |
拿到这个整数之后,通过一些位运算,我们就能得出元素位置的详细信息。(实际上,这与C#语言中的[Flags]一个道理)
直接上示例代码:
var doc = document,
html = doc.documentElement,
body = doc.body; var pos = html.compareDocumentPosition(body);// var after = pos & 2;//
console.log('html在body后面',!!after); var before = pos & 4;//
console.log('html在body前面',!!before); var inside = pos & 8;//
console.log('html在body内部',!!inside); var contain = pos & 16;//
console.log('html包含body',!!contain);