javascript - jQuery document.createElement 等效?

标签 javascript jquery html dom dhtml

我正在重构一些旧的 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

但我不确定这是否更好。

最佳答案

这是您在“one”行中的示例。

this.$OuterDiv = $('<div></div>')
    .hide()
    .append($('<table></table>')
        .attr({ cellSpacing : 0 })
        .addClass("text")
    )
;

更新:我想我会更新这篇文章,因为它仍然有相当多的流量。在下面的评论中有一些关于 $("<div>") 的讨论。与 $("<div></div>")$(document.createElement('div'))作为一种创造新元素的方式,这是“最好的”。

我整理了a small benchmark ,下面是大致重复上述选项 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 毫秒


更新 2

更新 jQuery 1.7.2 并将基准放在 JSBen.ch这可能比我的原始基准更科学一点,而且现在可以众包了!

http://jsben.ch/#/ARUtz

关于javascript - jQuery document.createElement 等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268490/

相关文章:

javascript - 改变被点击的元素并保存在cookies中

jquery - 魔线导航

javascript - Express 中的动态路由, "Cannot read property ' concat' of undefined”错误

javascript - 在号召性用语之前显示模式引导

javascript - jQuery 兄弟/子选择器

javascript - svg 图像上的悬停效果不适用于与 Joomla 中的单篇文章链接的页面

javascript - 预览时 jQuery 似乎不起作用

javascript - 我在 JavaScript 中将整数转换为文本时遇到错误

javascript - 在javascript中调用带有双参数()的函数

javascript - 工具提示 Bootstrap 持续时间