From: John Resig Date: Wed, 25 Feb 2009 18:29:18 +0000 (+0000) Subject: Made some changes to how .find() works, inlined the duplicate check - should change... X-Git-Url: http://git.asbjorn.biz/?a=commitdiff_plain;ds=sidebyside;h=f094c803deba3c35c66f9dc0923db800fb088753;p=jquery.git Made some changes to how .find() works, inlined the duplicate check - should change other methods to act similarly. Goes towards fixing #4240. --- diff --git a/src/core.js b/src/core.js index 55e6236..7ff9d15 100644 --- a/src/core.js +++ b/src/core.js @@ -286,18 +286,26 @@ jQuery.fn = jQuery.prototype = { splice: [].splice, find: function( selector ) { - if ( this.length === 1 ) { - var ret = this.pushStack( "", "find", selector ); - jQuery.find( selector, this[0], ret ); - return ret; - } else { - var ret = this.pushStack( "", "find", selector ); - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.find( selector, this[i], ret ); + var ret = this.pushStack( "", "find", selector ), length = 0; + + for ( var i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( var n = length; n < ret.length; n++ ) { + for ( var r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } } - //jQuery.find.uniqueSort( ret ); - return ret; } + + return ret; }, clone: function( events ) {