Obwohl dies eine sehr alte Frage ist, dachte ich, es wäre gut, sie mit aktuellen Informationen zu aktualisieren;
Seit jQuery 1.8 gibt es eine jQuery.parseHTML() Funktion, die jetzt eine bevorzugte Methode zur Erstellung von Elementen ist. Außerdem gibt es einige Probleme beim Parsen von HTML über $('(html code goes here)')
Zum Beispiel wird auf der offiziellen jQuery-Website Folgendes erwähnt einer ihrer Versionshinweise :
Entspanntes HTML-Parsing: Sie können nun wieder führende Leerzeichen oder Zeilenumbrüche vor Tags in $(htmlString). Wir raten immer noch dringend, dass $.parseHTML() zu verwenden, wenn Sie HTML aus externen Quellen parsen Quellen erhalten haben, und werden in Zukunft möglicherweise weitere Änderungen am HTML-Parsing vornehmen. Zukunft vornehmen.
Um sich auf die eigentliche Frage zu beziehen, könnte das gegebene Beispiel wie folgt übersetzt werden:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
was leider weniger bequem ist als die Verwendung von nur $()
, aber es gibt Ihnen mehr Kontrolle, zum Beispiel können Sie Skript-Tags ausschließen (Inline-Skripte wie onclick
allerdings):
> $.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>]
Und hier ist ein Benchmark der ersten Antwort, angepasst an die neue Realität:
JSbin Link
jQuery 1.9.1
$.parseHTML: 88ms
$($.parseHTML): 240ms
<div></div>: 138ms
<div>: 143ms
createElement: 64ms
Es sieht so aus parseHTML
ist viel näher an createElement
als $()
aber der ganze Schub ist weg, nachdem die Ergebnisse in ein neues jQuery-Objekt eingepackt wurden
0 Stimmen
jsben.ch/#/ARUtz - ein Benchmark für jquery vs createElement
0 Stimmen
Mögliches Duplikat von Erstellen eines div-Elements in jQuery
0 Stimmen
Ungefangener TypeError: $.create ist keine Funktion