我有带有垂直滚动条的 div。Div 正在通过 ajax 动态更新,并使用 jQuery 的 .html 方法插入 html。更新 div 后,滚动条返回顶部,我试图将其保持在以前的位置。
这就是我正在尝试的方式:
var scrollPos = $('div#some_id').scrollTop(); //remember scroll pos
$.ajax({...
success: function(data) {
$('div#some_id').html(data.html_content); //insert html content
$('div#some_id').scrollTop(scrollPos); //restore scroll pos
}
});
这失败了。我最好的猜测是由于插入的 html 未呈现(即没有滚动)而失败。
例如,这有效。
setTimeout(function(){
$('div#some_id').scrollTop(scrollPos);
}, 200);
但在我看来,这是肮脏的黑客行为。我无法知道某些浏览器不会花费超过这 200 毫秒来呈现插入的内容。
有没有办法在继续之前等待浏览器完成渲染插入的 html?