検索

ホームページ  >  に質問  >  本文

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

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

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


phpcn_u274phpcn_u2742844日前1833

全員に返信(2)返信します

  • 数据分析师

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

    ネイティブ JS で jquery の最も近い() メソッドを実装するにはどうすればよいですか? -PHP中国語Q&A-ネイティブjsでjqueryのclosest()メソッドを実装するにはどうすればよいですか? -PHP中国語サイトQ&A

    ぜひ見て学んでください。

    返事
    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
  • キャンセル返事