js判断某个dom元素是否包含在另外一个dom元素中

js判断某个dom元素是否包含在另外一个dom元素中。
不用jquery,用js实现

阅读 17.2k
3 个回答

Node.contains()原生方法的,移动端使用毫无压力。
如果不支持原生api,就写个兼容的函数,用parentNode来判断,提供一个Zepto的实现,清晰明了:

var contains = document.documentElement.contains ?
      function(parent, node) {
        return parent !== node && parent.contains(node)
      } :
      function(parent, node) {
        while (node && (node = node.parentNode))
          if (node === parent) return true
        return false
      }

我看了一下,跟楼上讲的还是有点区别,以后你在写自己的js事件委托功能的时候可能也会要碰到这个问题。

function getTargetNode(ele,target){
    //ele是内部元素,target是你想找到的包裹元素
    if(!ele || ele === document) return false;
    return ele === target ? true : getTargetNode(ele.parentNode,target);
}
推荐问题