首页 > 代码库 > javascript中的元素包含判断

javascript中的元素包含判断

在实际开发中,很多时候需要知道某个节点是不是另一个节点的后代。很多浏览器提供了contains方法,如:

console.log(document.documentElement.contains(document.body));//输入ture

DOM3提供的compareDocumentPosition方法也可以判断元素位置关系,结果如下:

1  无关

2  居前

4  居后

8  包含

16  被包含

因此跨浏览器的contains写法如下:

function contains(refNode,otherNode){    if(typeof refNode.contains ===function){        return refNode.contains(otherNode);    }else if(typeof refNode.compareDocumentPosition ===function){        return !!(refNode.compareDocumentPosition(otherNode)&16);    }else{        var node=otherNode.parentNode;        do{            if(node===refNode){                return true;            }        }while(parentNode!=null);        return false;    }}

 

javascript中的元素包含判断