首页 > 代码库 > contains方法

contains方法

contains()方法:

  contains()方法检查一个节点是不是另一个节点的后代。如body是html的后代,那么docuement.documentElement.contains(document.dody)就会返回true;在DOM3中有个函数也可以实现这个功能,或者说更全面,那就是compareDocumentPosition这个函数,它返回一个码,我们可以用它与16作按位与运算,再强制转换成布尔型的。

  下面是一个兼容通用的contains方法。

  

function contains(refNode, otherNode) {    if (typeof refNode.contains == "function" && (!client.engine.webkit || client.engine.webkit >= 522)) {        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;            } else {                node = node.parentNode;            }        } while (node !== null);        return false;    }}

 

contains方法