Javascript jQuery append/prepend in loop-当所有元素都应该逐个显示时,它们会一起显示

Javascript jQuery append/prepend in loop-当所有元素都应该逐个显示时,它们会一起显示,javascript,jquery,loops,Javascript,Jquery,Loops,我有一个循环,在这个循环中,我将单个元素附加/前置到父元素中。在循环完成之前,jQuery不会显示任何子元素 以以下代码为例: var i=0; while (i < 10000) { $('#content').prepend($('<div>').html(++i).append($('<br>'))); } var i=0; 而(i0){ html+=''+i--+''; } $('#content').append(html); 如果您确实想要

我有一个循环,在这个循环中,我将单个元素附加/前置到父元素中。在循环完成之前,jQuery不会显示任何子元素

以以下代码为例:

var i=0;
while (i < 10000) {
    $('#content').prepend($('<div>').html(++i).append($('<br>')));
}
var i=0;
而(i<10000){
$('#content').prepend($('').html(++i).append($('
')); }


有没有办法确保单个元素逐个显示?

很简单,没有,但是它更取决于浏览器的渲染器而不是jQuery

还请注意,创建一个长HTML字符串并对DOM使用单个
append()
调用要比向DOM追加10000个相对较小的字符串快得多

var i = 10000, html = '';
while (i > 0) {
    html += '<div>' + i-- + '</br></div>';
}
$('#content').append(html);
var i=10000,html='';
而(i>0){
html+=''+i--+'
'; } $('#content').append(html);


如果您确实想要每个div一个接一个出现的效果,您可以使用队列,但是它不会很快。

这是您期望的行为吗:?是的,但是没有延迟,您能解释为什么不可能吗?与重新呈现父元素的方式有关?与浏览器如何在内部处理UI更新有关。基本上,它会取消快速连续发生的更新请求的公告,以便UI仅在最后一个请求完成后更新。这是因为重新绘制整个UI并不是一个便宜的过程(从性能上讲),试图在几分之一秒内更新DOM 10000多次会导致问题。