aboutsummaryrefslogtreecommitdiffstats
path: root/src/traversing.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/traversing.js')
-rw-r--r--src/traversing.js23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/traversing.js b/src/traversing.js
index 0e379c72b..8f1e5eb50 100644
--- a/src/traversing.js
+++ b/src/traversing.js
@@ -69,12 +69,14 @@ jQuery.fn.extend({
},
add: function( selector ) {
- return this.pushStack( jQuery.unique( jQuery.merge(
- this.get(),
- typeof selector === "string" ?
+ var set = typeof selector === "string" ?
jQuery( selector ) :
- jQuery.makeArray( selector )
- )));
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( set[0] && (set[0].setInterval || set[0].nodeType === 9 || (set[0].parentNode && set[0].parentNode.nodeType !== 11)) ?
+ jQuery.unique( all ) :
+ all );
},
eq: function( i ) {
@@ -125,9 +127,16 @@ jQuery.each({
jQuery.fn[ name ] = function( selector ) {
var ret = jQuery.map( this, fn );
- if ( selector && typeof selector == "string" )
+ if ( selector && typeof selector === "string" ) {
ret = jQuery.multiFilter( selector, ret );
+ }
+
+ ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+ if ( name === "parents" && this.length > 1 ) {
+ ret = ret.reverse();
+ }
- return this.pushStack( jQuery.unique( ret ), name, selector );
+ return this.pushStack( ret, name, selector );
};
});