これは非常に古い質問ですが、最近の情報で更新した方がいいと思いました。
jQuery 1.8以降、jQuery.parseHTML()関数があり、現在、要素を作成するための推奨方法です。また、を介したHTMLの解析にはいくつかの問題があります。$('(html code goes here)')
たとえば、jQueryの公式Webサイトでは、リリースノートの1つで次のように言及しています。
緩和されたHTML解析:$(htmlString)のタグの前に、スペースや改行を追加できます。外部ソースから取得したHTMLを解析する場合は$ .parseHTML()を使用することを強くお勧めします。将来、HTML解析にさらに変更を加える可能性があります。
実際の質問に関連するために、例を次のように翻訳できます。
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
残念ながら$()
、だけを使用するよりも便利ではありませんが、たとえば、スクリプトタグを除外するように選択できます(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>:138ミリ秒
<div>:143ミリ秒
createElement:64ms
それは次のようになりますparseHTML
はるかに近くにあるcreateElement
よりも$()
、しかし、すべてのブーストが新しいjQueryオブジェクトに結果をラップした後に消えました