标签:
var contains=(function(){ if(typeof document.documentElement.contains){ return function(refNode,otherNode){ return refNode.contains(otherNode); } }else if(typeof document.documentElement.compareDocumentPosition){ return function(refNode,otherNode){ return !!(refNode.compareDocumentPosition(otherNode) & 16) } }else{ return function(refNode,otherNode){ var node=otherNode.parentNode; do{ if(node===refNode){ return true; }else{ return; } }while(node!==null) } } })()
三个可能性,第一个是看浏览时支持contains方法,如果是的话就返回函数给变量作为它的值。
第二个也是一个检查两者关系的DOM方法,不过它返回的是一个关系的位掩码,
1 代表无关 2 代表给定的在参考的之前 4 给定的在参考之后 8给定的是参考的祖先 16给定的是参考的后代
我测试之后发现他会返回两个掩码比如说:
alert(!!(document.documentElement.compareDocumentPosition(document.body) & 16));
第三个就是两个方法都不支持,用循环来一级一级的查找。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/u011551941/article/details/47104745