zoukankan      html  css  js  c++  java
  • jquery中的 jquery.contains(a,b)

     jquery.contains(a,b) 判断元素 a中是否包含 b 元素:

    源码:

    contains = isNative(docElem.contains) || docElem.compareDocumentPosition ?
            function( a, b ) {
                var adown = a.nodeType === 9 ? a.documentElement : a,
                    bup = b && b.parentNode;
                return a === bup || !!( bup && bup.nodeType === 1 && (
                    adown.contains ?
                        adown.contains( bup ) :
                        a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
                ));
            } :
            function( a, b ) {
                if ( b ) {
                    while ( (b = b.parentNode) ) {
                        if ( b === a ) {
                            return true;
                        }
                    }
                }
                return false;
            };

    isNative:

    rnative = /^[^{]+{s*[native code/,
    
    function isNative( fn ) {
    
    return rnative.test( fn + "" );
    }

    重点解释:

    a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16

    IE中是使用的 adown.contains( bup )来检验。
    NodeA.compareDocumentPosition(NodeB) 返回的结果,包含你可以得到的信息。

    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             浏览器的私有使用

    a.compareDocumentPosition( bup )的值只有是 16时,与 16进行 & 运算才为真,其它的值与 16 进行 & 运算 都是 0.
  • 相关阅读:
    基于selenium的web自动化框架
    spring boot整合Mybatis
    Spring boot进阶-配置Controller、interceptor...
    spring boot 第一个Demo
    Spring事务管理
    mybatis、Spring整合(eclipse)以及事务管理
    highcharts 根据表格转化为不同的图表
    highChartTable 切换
    highcharts 切换
    九度 1533 最长上升子序列
  • 原文地址:https://www.cnblogs.com/huaan011/p/7153836.html
Copyright © 2011-2022 走看看