であるためjQuery1.8、 を使用$.parseHTML()して要素を作成する方が適切です。
2 つの利点があります。
1. のような古い方法を使用する場合$(string)、jQuery は文字列を調べて、html タグを選択するか、新しい要素を作成するかを確認します。を使用$.parseHTML()することで、新しい要素を明示的に作成することを jQuery に伝えるため、パフォーマンスが少し向上する可能性があります。
2.さらに重要なことは、古い方法を使用すると、クロスサイト攻撃 (詳細)に苦しむ可能性があることです。次のようなものがある場合:
var userInput = window.prompt("please enter selector");
$(userInput).hide();
悪者が<script src="xss-attach.js"></script>あなたをからかうために入力する可能性があります。幸いなことに、$.parseHTML()この恥ずかしさは避けてください。
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 []
aただし、は jQuery オブジェクトでbあり、 は html 要素であることに注意してください。
a.html('123')
// [<div>123</div>]
b.html('123')
// TypeError: Object [object HTMLDivElement] has no method 'html'
$(b).html('123')
// [<div>123</div>]