Meskipun ini adalah pertanyaan yang sangat lama, saya pikir akan baik untuk memperbaruinya dengan informasi terbaru;
Sejak jQuery 1.8 ada fungsi jQuery.parseHTML () yang sekarang menjadi cara yang lebih disukai untuk membuat elemen. Juga, ada beberapa masalah dengan parsing HTML via $('(html code goes here)')
, misalnya situs web jQuery resmi menyebutkan hal berikut di salah satu catatan rilis mereka :
Penguraian HTML yang rileks: Anda dapat sekali lagi memiliki spasi atau baris baru sebelum tag dalam $ (htmlString). Kami masih sangat menyarankan agar Anda menggunakan $ .parseHTML () saat mem-parsing HTML yang diperoleh dari sumber eksternal, dan mungkin membuat perubahan lebih lanjut ke penguraian HTML di masa mendatang.
Untuk berhubungan dengan pertanyaan aktual, contoh yang diberikan dapat diterjemahkan ke:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
yang sayangnya kurang nyaman daripada hanya menggunakan $()
, tetapi itu memberi Anda lebih banyak kontrol, misalnya Anda dapat memilih untuk mengecualikan tag skrip (itu akan meninggalkan skrip inline seperti onclick
meskipun):
> $.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>]
Juga, inilah tolok ukur dari jawaban teratas yang disesuaikan dengan kenyataan baru:
Tautan JSbin
jQuery 1.9.1
$ .parseHTML: 88ms
$ ($. parseHTML): 240ms
<div> </div>: 138ms
<div>: 143ms
createElement: 64ms
Sepertinya parseHTML
jauh lebih dekat createElement
daripada $()
, tetapi semua dorongan hilang setelah membungkus hasil dalam objek jQuery baru