Bu çok eski bir soru olmasına rağmen, bunu son bilgilerle güncellemenin iyi olacağını düşündüm;
JQuery 1.8'den beri , şimdi öğe oluşturmanın tercih edilen bir yolu olan bir jQuery.parseHTML () işlevi vardır. Ayrıca, $('(html code goes here)')
resmi jQuery web sitesi üzerinden HTML ayrıştırma ile ilgili bazı sorunlar vardır, bunların yayın notlarından birinde aşağıdakilerden bahseder :
Rahat HTML ayrıştırma: $ (htmlString) etiketlerinden önce bir kez daha önde gelen boşluklara veya yeni satırlara sahip olabilirsiniz. Harici kaynaklardan elde edilen HTML'yi ayrıştırırken $ .parseHTML () yöntemini kullanmanızı ve gelecekte HTML ayrıştırma işleminde daha fazla değişiklik yapmayı öneriyoruz.
Asıl soru ile ilgili olarak, sağlanan örnek şuraya çevrilebilir:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
maalesef sadece kullanmaktan daha az uygun $()
, ancak size daha fazla kontrol sağlar, örneğin komut dosyası etiketlerini hariç tutmayı seçebilirsiniz (satır içi komut dosyalarını onclick
olsa gibi bırakacaktır ):
> $.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>]
Ayrıca, en iyi cevaptan yeni gerçekliğe ayarlanmış bir kıyaslama:
JSbin Bağlantısı
jQuery 1.9.1
$ .parseHTML: 88 ms
$ ($. ayrıştırmaMLML): 240ms
<div> </div>: 138ms
<div>: 143 ms
createElement: 64 ms
Görünüşe parseHTML
çok daha yakın olduğunu createElement
daha $()
, ancak tüm artırmak, yeni bir jQuery nesnesi sonuçlarını tamamlamasından sonra gitti