<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中删除一次后,IE(所有版本)将在任何进一步的添加时向DOM中添加一个空元素;而其他所有浏览器都会添加正确的非空元素。
另一个增加混淆的方面是,sourceEl仍然具有元素信息(例如,sourceEl.attr('class')将返回“source”)。
我知道缓解问题的方法(例如sourceEl.clone()),但最好能更好地了解为什么IE的行为不同以避免未来相关问题。
是什么导致源元素在替换元素后在IE中变为空?