Sebbene questa sia una domanda molto antica, ho pensato che sarebbe stato bello aggiornarla con informazioni recenti;
Da jQuery 1.8 esiste una funzione jQuery.parseHTML () che è ora un modo preferito di creare elementi. Inoltre, ci sono alcuni problemi con l'analisi dell'HTML tramite $('(html code goes here)')
, ad esempio il sito Web ufficiale di jQuery menziona quanto segue in una delle loro note di rilascio :
Analisi HTML rilassata: puoi ancora una volta avere spazi iniziali o nuove righe prima dei tag in $ (htmlString). Si consiglia comunque vivamente di utilizzare $ .parseHTML () durante l'analisi dell'HTML ottenuto da fonti esterne e potrebbe essere necessario apportare ulteriori modifiche all'analisi dell'HTML in futuro.
Per fare riferimento alla domanda effettiva, a condizione che l'esempio possa essere tradotto in:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
che sfortunatamente è meno conveniente rispetto all'uso di just $()
, ma ti dà più controllo, ad esempio puoi scegliere di escludere i tag di script (lascerà gli script in linea come onclick
se):
> $.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>]
Inoltre, ecco un punto di riferimento dalla risposta principale adattato alla nuova realtà:
JSbin Link
jQuery 1.9.1
$ .parseHTML: 88ms
$ ($. parseHTML): 240 ms
<div> </div>: 138ms
<div>: 143ms
createElement: 64ms
Sembra che parseHTML
sia molto più vicino createElement
di così $()
, ma tutta la spinta è sparita dopo aver avvolto i risultati in un nuovo oggetto jQuery