Obwohl dies eine sehr alte Frage ist, dachte ich, es wäre schön, sie mit aktuellen Informationen zu aktualisieren.
Seit jQuery 1.8 gibt es eine jQuery.parseHTML () -Funktion, die jetzt eine bevorzugte Methode zum Erstellen von Elementen ist. Außerdem gibt es einige Probleme beim Parsen von HTML über eine $('(html code goes here)')
offizielle jQuery-Website, auf der beispielsweise in einem ihrer Versionshinweise Folgendes erwähnt wird :
Entspanntes HTML-Parsen: Vor Tags in $ (htmlString) können wieder führende Leerzeichen oder Zeilenumbrüche stehen. Wir empfehlen weiterhin dringend, dass Sie $ .parseHTML () verwenden, wenn Sie HTML analysieren, das aus externen Quellen stammt, und möglicherweise in Zukunft weitere Änderungen an der HTML-Analyse vornehmen.
Um sich auf die eigentliche Frage zu beziehen, könnte das bereitgestellte Beispiel übersetzt werden in:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
Dies ist leider weniger bequem als die Verwendung von nur $()
, bietet Ihnen jedoch mehr Kontrolle. Sie können beispielsweise Skript-Tags ausschließen (es bleiben jedoch Inline-Skripte wie folgt 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>]
Hier ist auch ein Benchmark aus der Top-Antwort, angepasst an die neue Realität:
JSbin Link
jQuery 1.9.1
$ .parseHTML: 88 ms
$ ($. parseHTML): 240 ms
<div> </ div>: 138 ms
<div>: 143 ms
createElement: 64 ms
Es sieht so aus, als wäre parseHTML
es viel näher createElement
als $()
, aber der ganze Boost ist weg, nachdem die Ergebnisse in ein neues jQuery-Objekt eingeschlossen wurden