我一直在寻找最好的答案性能明智,同时在重要的DOM工作。
无睑的答案指出,使用JavaScript的表现将是最好的。
我已经对5,000行和400,000个字符进行了以下执行时间测试,并在要删除的部分中使用复杂的DOM组合。使用JavaScript时,为了方便,我使用了ID而不是类。
使用$ .unwrap()
$('#remove-just-this').contents().unwrap();
201.237ms
使用$ .replaceWith()
var cnt = $("#remove-just-this").contents();
$("#remove-just-this").replaceWith(cnt);
156.983ms
使用JavaScript中的DocumentFragment
var element = document.getElementById('remove-just-this');
var fragment = document.createDocumentFragment();
while(element.firstChild) {
fragment.appendChild(element.firstChild);
}
element.parentNode.replaceChild(fragment, element);
147.211ms
结论
性能方面,即使是在一个相对大的DOM结构,使用jQuery和javascript的区别并不大。令人惊讶的是$.unwrap()
比$.replaceWith()
更昂贵。 测试已经用jQuery 1.12.4完成。
更清洁溶液比我! – ConroyP 2008-10-04 09:42:24
希望我意识到(错误.. **发现**)这3小时前...简单而优雅 - 真棒! – Tathagata 2011-06-01 21:10:59
'cnt'的意义是什么? – 2011-09-25 23:12:42