私は、outerHTMLがtokimonソリューション(クローンなし)であり、outerHTML2がjessicaソリューション(クローン)であるこの簡単なテストを行いました
console.time("outerHTML");
for(i=0;i<1000;i++)
{
var html = $("<span style='padding:50px; margin:50px; display:block'><input type='text' title='test' /></span>").outerHTML();
}
console.timeEnd("outerHTML");
console.time("outerHTML2");
for(i=0;i<1000;i++)
{
var html = $("<span style='padding:50px; margin:50px; display:block'><input type='text' title='test' /></span>").outerHTML2();
}
console.timeEnd("outerHTML2");
そして私のクロム(バージョン20.0.1132.57(0))ブラウザーでの結果は
outerHTML:81ms
outerHTML2:439ms
しかし、ネイティブのouterHTML関数なしでtokimonソリューションを使用する場合(おそらくほとんどすべてのブラウザーでサポートされています)
我々が得る
outerHTML:594ms
outerHTML2:332ms
実際の例ではループや要素が増えるので、完璧な組み合わせは
$.fn.outerHTML = function()
{
$t = $(this);
if( "outerHTML" in $t[0] ) return $t[0].outerHTML;
else return $t.clone().wrap('<p>').parent().html();
}
したがって、cloneメソッドは実際にはwrap / unwrapメソッドよりも高速です
(jquery 1.7.2)