Merge branch 'master' of https://github.com/scottgonzalez/jquery
authorjeresig <jeresig@gmail.com>
Fri, 14 Jan 2011 16:23:05 +0000 (11:23 -0500)
committerjeresig <jeresig@gmail.com>
Fri, 14 Jan 2011 16:23:05 +0000 (11:23 -0500)
1  2 
src/traversing.js

diff --combined src/traversing.js
@@@ -6,7 -6,14 +6,14 @@@ var runtil = /Until$/
        rmultiselector = /,/,
        isSimple = /^.[^:#\[\.,]*$/,
        slice = Array.prototype.slice,
-       POS = jQuery.expr.match.POS;
+       POS = jQuery.expr.match.POS,
+       // methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
  
  jQuery.fn.extend({
        find: function( selector ) {
@@@ -196,8 -203,7 +203,8 @@@ jQuery.each(
        }
  }, function( name, fn ) {
        jQuery.fn[ name ] = function( until, selector ) {
 -              var ret = jQuery.map( this, fn, until );
 +              var ret = jQuery.map( this, fn, until ),
 +        args = slice.call(arguments);
  
                if ( !runtil.test( name ) ) {
                        selector = until;
                        ret = jQuery.filter( selector, ret );
                }
  
-               ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+               ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
  
                if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
                        ret = ret.reverse();
                }
  
 -              return this.pushStack( ret, name, slice.call(arguments).join(",") );
 +              return this.pushStack( ret, name, args.join(",") );
        };
  });