问题描述
原生 js 如何实现 jquery 的 closest()方法?
情景: 想要查找某个元素的祖先元素, 中间不知相隔多少层? 但是又不想引入jquery整个库。
问题解答
回答1:原生 js 如何实现 jquery 的 closest()方法?-PHP中文网问答-原生 js 如何实现 jquery 的 closest()方法?-PHP中文网问答
围观一下哦,学习一下。
回答2:这个问题,你该让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 );},