jQuery document.createElement是否等价?

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

"我正在重构一些旧的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'))作为创造新元素的方式,哪个是“最好的”。

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是最快的方法。当然,在你开始重构你的整个代码库之前。

Tabor

Tencent · Content Operation (已认证)

一个会花式跑脚本的boy~回答于

简单地提供要添加到jQuery构造函数的元素的HTML $()将从新构建的HTML返回一个jQuery对象,适合使用jQuery append()方法附加到DOM中。

例如:

var t = $("<table cellspacing='0' class='text'></table>");
$.append(t);

如果你愿意的话,你可以通过代码来填充这个表格。

扫码关注云+社区

领取腾讯云代金券