判断一个节点是否是另一个元素的子节点

判断一个元素是否包含一个指定节点

这个函数时在contains()的基础上封装的,contains()不兼容火狐,特意封装了一下,以后方便用。
function isDOMContains(parentEle,ele,container){
    //parentEle: 要判断节点的父级节点
    //ele:要判断的子节点
    //container : 二者的父级节点
    
    //如果parentEle h和ele传的值一样,那么两个节点相同
    if(parentEle == ele){
        return true
    }
    if(!ele || !ele.nodeType || ele.nodeType != 1){
        return false;
    }
    //如果浏览器支持contains
    if(parentEle.contains){
        return parentEle.contains(ele)
    }
    //火狐支持
    if(parentEle.compareDocumentPosition){
        return !!(parentEle.compareDocumentPosition(ele)&16);
    }

    //获取ele的父节点
    var parEle = ele.parentNode;
    while(parEle && parEle != container){
       if(parEle == parentEle){
        return true;
       }
       parEle = parEle.parentNode;
    }
    return false;
}
posted @ 2017-07-15 13:40  rainbow8590  阅读(723)  评论(0编辑  收藏  举报