我正在重构一些旧的 JavaScript 代码,并且正在进行大量的 DOM 操作。
var d = document; var odv = d.createElement("div"); odv.style.display = "none"; this.OuterDiv = odv; var t = d.createElement("table"); t.cellSpacing = 0; t.className = "text"; odv.appendChild(t);
我想知道是否有更好的方法来使用 jQuery 来做到这一点。我一直在尝试:
var odv = $.create("div"); $.append(odv); // And many more
但我不确定这是否更好。
这是您在“一”行中的示例。
this.$OuterDiv = $('<div></div>') .hide() .append($('<table></table>') .attr({ cellSpacing : 0 }) .addClass("text") ) ;
更新 :我想我会更新这篇文章,因为它仍然有相当多的流量。在下面的评论中,有一些关于$("<div>")vs $("<div></div>")vs$(document.createElement('div'))作为创建新元素的方式的讨论,这是“最好的”。
$("<div>")
$("<div></div>")
$(document.createElement('div'))
我整理了一个小基准,这里大致是重复上述选项 100,000 次的结果:
jQuery 1.4、1.5、1.6
Chrome 11 Firefox 4 IE9 <div> 440ms 640ms 460ms <div></div> 420ms 650ms 480ms createElement 100ms 180ms 300ms
jQuery 1.3
Chrome 11 <div> 770ms <div></div> 3800ms createElement 100ms
jQuery 1.2
Chrome 11 <div> 3500ms <div></div> 3500ms createElement 100ms
我认为这不足为奇,但这document.createElement是最快的方法。当然,在你开始重构整个代码库之前,请记住我们在这里讨论的差异(除了 jQuery 的古老版本之外)相当于 每千个元素 额外增加 3 毫秒。
document.createElement
更新 2
针对jQuery 1.7.2 进行了更新,并设置了JSBen.ch可能比我的原始基准更科学的基准,而且它现在可以众包了!
JSBen.ch
http://jsben.ch/#/ARUtz