搜索

首页  >  问答  >  正文

原生 js 如何实现 jquery 的 closest()方法?

原生 js 如何实现 jquery 的 closest()方法?

情景: 想要查找某个元素的祖先元素, 中间不知相隔多少层? 但是又不想引入jquery整个库。


phpcn_u274phpcn_u2742847 天前1841

全部回复(2)我来回复

  • 数据分析师

    数据分析师2017-10-01 00:19:43

    原生 js 如何实现 jquery 的 closest()方法?-PHP中文网问答-原生 js 如何实现 jquery 的 closest()方法?-PHP中文网问答

    围观一下哦,学习一下。

    回复
    0
  • 阿神

    阿神2017-02-14 13:31:54

    这个问题,你该让jquery回答啊....自己看下源码不就可以了

    closest: function( selectors, context ) {
        var cur,
            i = 0,
            l = this.length,
            matched = [],
            pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
                jQuery( selectors, context || this.context ) :
                0;
    
        for ( ; i < l; i++ ) {
            for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
    
                // Always skip document fragments
                if ( cur.nodeType < 11 && ( pos ?
                    pos.index( cur ) > -1 :
    
                    // Don't pass non-elements to Sizzle
                    cur.nodeType === 1 &&
                        jQuery.find.matchesSelector( cur, selectors ) ) ) {
    
                    matched.push( cur );
                    break;
                }
            }
        }
    
        return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
    },


    回复
    0
  • 取消回复