aboutsummaryrefslogtreecommitdiffstats
path: root/src/manipulation.js
diff options
context:
space:
mode:
authorjeresig <jeresig@gmail.com>2010-01-28 17:18:27 -0500
committerjeresig <jeresig@gmail.com>2010-01-28 17:18:27 -0500
commit388a00fe918c2ec759bd33c34bfc13aabfe413d0 (patch)
tree3454418f0fe6a77c73c56e740097155a446b1266 /src/manipulation.js
parentb8076a914ba9d400dc9c48d866b145df6fabafcf (diff)
downloadjquery-388a00fe918c2ec759bd33c34bfc13aabfe413d0.tar.gz
jquery-388a00fe918c2ec759bd33c34bfc13aabfe413d0.zip
Skip around inserting a fragment when possible (insert the node directly).
Diffstat (limited to 'src/manipulation.js')
-rw-r--r--src/manipulation.js20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/manipulation.js b/src/manipulation.js
index 01c6b0ba7..93950de0f 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -296,7 +296,7 @@ jQuery.fn.extend({
},
domManip: function( args, table, callback ) {
- var results, first, value = args[0], scripts = [];
+ var results, first, value = args[0], scripts = [], fragment;
// We can't cloneNode fragments that contain checked, in WebKit
if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
@@ -320,8 +320,14 @@ jQuery.fn.extend({
} else {
results = buildFragment( args, this, scripts );
}
-
- first = results.fragment.firstChild;
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
if ( first ) {
table = table && jQuery.nodeName( first, "tr" );
@@ -331,14 +337,14 @@ jQuery.fn.extend({
table ?
root(this[i], first) :
this[i],
- results.cacheable || this.length > 1 || i > 0 ?
- results.fragment.cloneNode(true) :
- results.fragment
+ i > 0 || results.cacheable || this.length > 1 ?
+ fragment.cloneNode(true) :
+ fragment
);
}
}
- if ( scripts ) {
+ if ( scripts.length ) {
jQuery.each( scripts, evalScript );
}
}