Skip around inserting a fragment when possible (insert the node directly).
This commit is contained in:
parent
b8076a914b
commit
388a00fe91
1 changed files with 13 additions and 7 deletions
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue