判断节点包含

  • 元素包含

contains基本兼容
用法node.contains( otherNode )
compareDocumentPosition感觉比较奇怪,据说是这样

The Node.compareDocumentPosition() method compares the position of the
current node against another node in any other document.
返回值分为6个数字
jquery的selector-native有个原生方法contains这样写的

contains: function( a, b ) {
    var adown = a.nodeType === 9 ? a.documentElement : a, 
        bup = b && b.parentNode;
    return a === bup || !!( bup && bup.nodeType === 1 &&  adown.contains(bup) );
    }

比较容易理解


update 2015-01-27

开发凤凰焦点项目的时候,有用到判断元素包含关系的contains,当时第一反应是想到jquery取子元素的方式.(之前看过实现方式的,忘了2333...)当然不是用的contains,因为相比取子元素更适合关系判断.那么jq是怎么取的呢?

jQuery.extend({

    //direction
    dir: function( elem, dir, until ) {
        var matched = [],
            truncate = until !== undefined;

        while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
            if ( elem.nodeType === 1 ) {     //nodeType:1 --> element
                if ( truncate && jQuery( elem ).is( until ) ) {
                    break;
                }
                matched.push( elem );
            }
        }
        return matched;
    },
    
    sibling: function( n, elem ) {
        var matched = [];

        for ( ; n; n = n.nextSibling ) {
            if ( n.nodeType === 1 && n !== elem ) {
                matched.push( n );
            }
        }

        return matched;
    }
});
siblings: function( elem ) {
    return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
},
children: function( elem ) {
    return jQuery.sibling( elem.firstChild );
}

转载于:https://www.cnblogs.com/kite-Runner/p/4222920.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值