2

Google Chromeのjqueryのappendメソッドで奇妙な問題が発生しています。要素が空の場合は終了タグが書き込まれませんが、要素に文字が含まれている場合は書き込みが行われます。

このコードを使用する場合:

$('#workZone .canvas').each(function(i) {
        $(this).append('<canvas id="test"></canvas>');
    });
}

私はこれをマークアップで取得します:

<canvas id="test">

このコードを使用する場合:

$('#workZone .canvas').each(function(i) {
        $(this).append('<canvas id="test">i</canvas>');
    });
}

マークアップで期待するものを取得します。

<canvas id="test">i</canvas>

もちろん、終了タグが欲しいのですが、使い捨てのキャラクターを含める必要はありません。何が起こっている?

jsfiddleのテストケースは次のとおりです。http://jsfiddle.net/YSDnk/

ありがとう!

ティム

4

4 に答える 4

1

これを試して:

$(this).append('<canvas id="test"><!-- //comment --> </canvas>');

htmlコメントは空のスペースに入れる必要があります。このようにして、終了タグが表示されます。

于 2012-09-06T22:33:52.870 に答える
1

これをどのように確認しているかはわかりませんが、最初のコードで完全なタグを取得しています。インスペクターを見ると、何が表示されているかがわかりますが、コンソールでこれを実行すると、次のようになります。

console.log($("#workZone .canvas").html())

印刷物では、完全なHTMLが有効で、適切に閉じられていることがわかります。

于 2012-09-06T22:40:55.397 に答える
1

これは以前に投稿されたものと同じ解決策ですが、コメントで解決できない場合に備えて、タグの間に空白があります。

$(this).append('<canvas id="test">&nbsp</canvas>');
于 2012-09-07T00:21:13.353 に答える
0

使用する場合:

$(this).append('<canvas id="test"/>');

これはあなたが持っているものと同等であると思われるので、なぜそれが機能するのかわかりません、私はちょうどすべての癖をテストすることを学びました。

于 2012-09-06T22:34:16.167 に答える