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