aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg <markelog@gmail.com>2012-06-28 04:55:36 +0400
committerDave Methvin <dave.methvin@gmail.com>2012-07-06 09:48:52 -0400
commit05aff402310d7db5d15f96b15071af6aa21a2afc (patch)
tree7c4dba23c514ce8a4562969793c48ae3e05a6df3
parentf8baea8f7a8b23d0e25c0dc82670fbe48b9bf587 (diff)
downloadjquery-05aff402310d7db5d15f96b15071af6aa21a2afc.tar.gz
jquery-05aff402310d7db5d15f96b15071af6aa21a2afc.zip
Optimization of array operations, closes gh-844.
-rw-r--r--src/core.js10
-rw-r--r--src/manipulation.js16
-rw-r--r--src/traversing.js2
3 files changed, 12 insertions, 16 deletions
diff --git a/src/core.js b/src/core.js
index 9a506f31e..c92774075 100644
--- a/src/core.js
+++ b/src/core.js
@@ -197,15 +197,9 @@ jQuery.fn = jQuery.prototype = {
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = this.constructor();
-
- if ( jQuery.isArray( elems ) ) {
- core_push.apply( ret, elems );
- } else {
- jQuery.merge( ret, elems );
- }
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
diff --git a/src/manipulation.js b/src/manipulation.js
index 9ca6b0a17..fafccffbb 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -146,10 +146,11 @@ jQuery.fn.extend({
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this );
});
- } else if ( arguments.length ) {
+ }
+
+ if ( arguments.length ) {
var set = jQuery.clean( arguments );
- set.push.apply( set, this.toArray() );
- return this.pushStack( set, "before", arguments );
+ return this.pushStack( jQuery.merge( set, this ), "before", this.selector );
}
},
@@ -158,10 +159,11 @@ jQuery.fn.extend({
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this.nextSibling );
});
- } else if ( arguments.length ) {
- var set = this.pushStack( this, "after", arguments );
- set.push.apply( set, jQuery.clean(arguments) );
- return set;
+ }
+
+ if ( arguments.length ) {
+ var set = jQuery.clean( arguments );
+ return this.pushStack( jQuery.merge( this, set ), "after", this.selector );
}
},
diff --git a/src/traversing.js b/src/traversing.js
index 4a68ccb5e..a3b2be213 100644
--- a/src/traversing.js
+++ b/src/traversing.js
@@ -199,7 +199,7 @@ jQuery.each({
contents: function( elem ) {
return jQuery.nodeName( elem, "iframe" ) ?
elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
+ jQuery.merge( [], elem.childNodes );
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {