尽管这是一个非常老的问题,但我认为最好用最新信息进行更新。
从jQuery 1.8开始,有一个jQuery.parseHTML()函数现在是创建元素的首选方法。另外,通过$('(html code goes here)')
官方HTML 网站解析HTML存在一些问题,例如官方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>:143ms
createElement:64毫秒
看起来parseHTML
更接近createElement
比$()
,但所有的提升是一个新的jQuery对象包装后的结果走了