次の HTML と JavaScript は、この jsFiddle の一部から取得されます: http://jsfiddle.net/stephenjwatkins/2j3ZB/3/
HTML:
<p class="source">
Source
</p>
<div id="target">
<p class="dummy">
Target
</p>
</div>
<button id="transfer-button">Transfer</button>
JavaScript:
var sourceEl = $('.source');
var targetEl = $('#target');
$('#transfer-button').click(function() {
targetEl.html('<p class="dummy">Transferring...</p>');
setTimeout(function() {
// Source element will be empty on second attempt to append
targetEl.html('').append(sourceEl);
}, 750);
return false;
});
setTimeout とダミー テキストは、単に視覚的なインジケータのためにあることに注意してください。
ご覧のとおり、ソース要素が DOM に追加され、DOM から削除された後、IE (すべてのバージョン) は、その後の追加時に空の要素を DOM に追加します。一方、他のすべてのブラウザーは、正しい空でない要素を追加します。
混乱を招くもう 1 つの側面は、sourceEl がまだ要素情報を持っていることです (たとえば、sourceEl.attr('class')
"source" が返されます)。
この問題を軽減する方法 (例: ) は知ってsourceEl.clone()
いますが、今後関連する問題を回避するために、IE の動作が異なる理由をよりよく理解することをお勧めします。
要素を一度置き換えた後、ソース要素がIEで一意に空になる原因は何ですか?