Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix #12816. Ensure .find() result are DOM ordered.

  • Loading branch information...
commit 5ed0450dc471f61e4c5d5df30df3f3294a3e6bd6 1 parent e8cf41a
@dmethvin dmethvin authored
Showing with 10 additions and 30 deletions.
  1. +10 −30 src/traversing.js
View
40 src/traversing.js
@@ -12,46 +12,26 @@ var runtil = /Until$/,
jQuery.fn.extend({
find: function( selector ) {
- var prevLength, n, r, ret,
- i = 0,
- self = this,
- selfLength = this.length;
+ var i, ret, self;
if ( typeof selector !== "string" ) {
-
- ret = jQuery( selector ).filter(function() {
- for ( ; i < selfLength; i++ ) {
+ self = this;
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < self.length; i++ ) {
if ( jQuery.contains( self[ i ], this ) ) {
return true;
}
}
- });
-
- } else {
+ }) );
+ }
- ret = [];
- for ( ; i < selfLength; i++ ) {
- prevLength = ret.length;
- jQuery.find( selector, this[ i ], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- // by comparing the newly added elements on the ith
- // iteration to the elements added by the previous iterations
- for ( n = prevLength; n < ret.length; n++ ) {
- for ( r = 0; r < prevLength; r++ ) {
- if ( ret[ r ] === ret[ n ] ) {
- ret.splice( n--, 1 );
- break;
- }
- }
- }
- }
- }
+ ret = [];
+ for ( i = 0; i < this.length; i++ ) {
+ jQuery.find( selector, this[ i ], ret );
}
// Needed because $( selector, context ) becomes $( context ).find( selector )
- ret = this.pushStack( ret );
+ ret = this.pushStack( jQuery.unique( ret ) );
ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
return ret;
},

1 comment on commit 5ed0450

@dmethvin
Owner

Damn, forgot to add another test!

Please sign in to comment.
Something went wrong with that request. Please try again.