虽然这是一个非常古老的问题,但我认为用最近的信息更新它会很好;
从 jQuery 1.8 开始,有一个jQuery.parseHTML()函数,它现在是创建元素的首选方式。此外,通过解析 HTML 存在一些问题$('(html code goes here)')
,例如官方 jQuery 网站在其发行说明之一中提到以下内容:
轻松的 HTML 解析:您可以再次在 $(htmlString) 中的标记之前使用前导空格或换行符。我们仍然强烈建议您在解析从外部来源获得的 HTML 时使用 $.parseHTML(),并且将来可能会对 HTML 解析进行进一步的更改。
为了与实际问题相关,提供的示例可以翻译为:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
不幸的是,这不如使用 just 方便$()
,但它为您提供了更多控制权,例如您可以选择排除脚本标签(onclick
尽管它会留下内联脚本):
> $.parseHTML('<div onclick="a"></div><script></script>')
[<div onclick="a"></div>]
> $.parseHTML('<div onclick="a"></div><script></script>', document, true)
[<div onclick="a"></div>, <script></script>]
此外,这是根据新现实调整的最佳答案的基准:
JSbin 链接
jQuery 1.9.1
$.parseHTML:88 毫秒
$($.parseHTML):240 毫秒
<div></div>:138ms
<div>: 143 毫秒
创建元素:64 毫秒
看起来比parseHTML
更接近,但是在将结果包装在一个新的 jQuery 对象中之后,所有的提升都消失了createElement
$()