Seit jQuery1.8
, mit $.parseHTML()
um Elemente zu erstellen, ist eine bessere Wahl.
Es gibt zwei Vorteile:
1.wenn Sie die alte Methode verwenden, die etwa so aussehen könnte $(string)
wird jQuery die Zeichenkette untersuchen, um sicherzustellen, dass Sie ein HTML-Tag auswählen oder ein neues Element erstellen möchten. Durch die Verwendung von $.parseHTML()
Wenn Sie diese Option wählen, teilen Sie jQuery mit, dass Sie explizit ein neues Element erstellen möchten, so dass die Leistung ein wenig besser sein kann.
2. viel wichtiger ist, dass Sie unter Cross-Site-Attacken leiden können ( mehr Infos ), wenn Sie die alte Methode verwenden. wenn Sie etwas wie:
var userInput = window.prompt("please enter selector");
$(userInput).hide();
ein Bösewicht kann eingeben <script src="xss-attach.js"></script>
um dich zu ärgern. Zum Glück, $.parseHTML()
diese Peinlichkeit für Sie zu vermeiden:
var a = $('<div>')
// a is [<div></div>]
var b = $.parseHTML('<div>')
// b is [<div></div>]
$('<script src="xss-attach.js"></script>')
// jQuery returns [<script src="xss-attach.js"></script>]
$.parseHTML('<script src="xss-attach.js"></script>')
// jQuery returns []
Bitte beachten Sie jedoch, dass a
ist ein jQuery-Objekt, während b
ist ein html-Element:
a.html('123')
// [<div>123</div>]
b.html('123')
// TypeError: Object [object HTMLDivElement] has no method 'html'
$(b).html('123')
// [<div>123</div>]
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