0

jQuery が常に HTML 文字列から正しい DOM を作成するとは限らないことがわかりました。ここに小さなコード例があります:

var x = "<div><p><ul><li>1</li></ul></p></div>";
console.log('x = ' + x);
console.log('jQuery(x) = ' + jQuery(x).html());
var y = "<div><div><ul><li>1</li></ul></div></div>";
console.log('y = ' + y);
console.log('jQuery(y) = ' + jQuery(y).html());

jQuery 1.7.1 でこれを実行すると、次の出力が得られます。

x = <div><p><ul><li>1</li></ul></p></div>
jQuery(x) = <p></p><ul><li>1</li></ul><p></p>
y = <div><div><ul><li>1</li></ul></div></div>
jQuery(y) = <div><ul><li>1</li></ul></div>

ご覧のとおり、2 番目の例では正しい DOM が作成されますが、最初の例では作成されません。唯一の違いは、<p>ではなくタグ<div>です。これは jQuery のバグまたは機能ですか?

4

1 に答える 1

8

要素は要素では違法であるため、これはおそらくブラウザのニュアンスです。<ul><p>

おそらく何が起こっているかというと、jQuery が文字列を理解したとおりに HTML 要素を作成しようとすると、ブラウザは jQuery が進むにつれて生成された HTML を「自動修正」しているということです。

于 2012-06-19T12:10:19.387 に答える