jQuery の $(html)

ドキュメントに書いてあるけど、$() で DOM エレメントを作成するときの引数は、html。

タグの外側にテキストがあったときに、思っていたのとは違う結果になった。

単純な例。こういうテキストは、

var str = '山田 <span class="name">太郎</span>';

こうなった。

console.log( $(str) );
// -> [<span class="name">太郎</span>]
console.log( $(str).find('.name') );
// -> []

テキストすべてから要素を作りたかったので外側を html タグで囲んだ。

var htmlStr = '<p>' + str + '</p>';

console.log( $(htmlStr) );
// -> [<p>山田 <span class="name">太郎</span></p>]
console.log( $(htmlStr).find('.name') );
// -> [<span class="name">太郎</span>]