zoukankan      html  css  js  c++  java
  • javascript contains方法来判断元素包含关系

    IE中的contains方法可以判断A元素是否包含B元素,如果包含则返回true,否则返回false,在开发中会在事件代理处理上面用到。W3C的方法是compareDocumentPosition,所以综上来说:JS通过contains和compareDocumentPosition方法来确定DOM节点间的关系,判断一个元素(对象)是否为另一个元素的子元素。
    IE的contains方法很简单,但是W3C的DOMElement.contains(DOMNode)方法会返回却是一个数值。

    DOMElement.contains(DOMNode)

    link:https://developer.mozilla.org/En/DOM/Node.compareDocumentPosition

    DOMElement.contains(DOMNode)返回的不是一个布尔值,而是一个很奇怪的数值,它是通过如下方式累加计算出来的:

    Bits Number Meaning
    000000 0 元素一致
    000001 1 节点在不同的文档(或者一个在文档之外)
    000010 2 节点 B 在节点 A 之前
    000100 4 节点 A 在节点 B 之前
    001000 8 节点 B 包含节点 A
    010000 16 节点 A 包含节点 B
    100000 32 浏览器的私有使用


    综上,来个@司徒正美 大大的方案:

    var contains  = function(root, el) { 	 if (root.compareDocumentPosition) 		 return root === el || !!(root.compareDocumentPosition(el) & 16); 	 if (root.contains && el.nodeType === 1){ 		 return root.contains(el) && root !== el; 	 } 	 while ((el = el.parentNode)) 		 if (el === root) return true; 	 return false;  }
  • 相关阅读:
    linux Mysql 安装
    百度地图的一些操作
    Angularjs Table
    liunx安装mongodb
    ARP协议
    Python获取IP的方式与意义
    selenium 的使用--持续更
    使用pyquery
    beautiful soup的用法
    内置函数
  • 原文地址:https://www.cnblogs.com/shihao/p/2559274.html
Copyright © 2011-2022 走看看