我在尝试在jQuery加载后立即滚动浏览器窗口时遇到问题。内容加载正常,并且调用一次加载完成后调用的函数。但是,如果我将超时设置为300毫秒,我只能实际滚动页面:
frame.html("#box").load("loadedfile.php", function(){
setTimeout(function() {
$('html,body').animate({
scrollTop: $("#framed").offset().top
}, 750);
},300);
});
在加载内容之后,但在浏览器能够滚动之前,加载完成功能似乎正在执行(因为承载脚本的页面最初不够长,无法激活滚动条)。
我的解决方法感觉很草率,可能是。有没有更好的方法来处理这个?超时似乎不是处理此问题的可靠方法。
我已尝试过window.scrollTo以及.animate
之外的jQuery scrollTo插件答案 0 :(得分:2)
您可以使用ajax调用来填充外部页面,并且在成功之后您可以使用所有滚动动画。
$.ajax({
url: 'loadedfile.php',
dataType: "html", // <-- set dataType to "html"
success: function(response) {
$("#box").html(response).fadeIn(1000); // <-- added fadeIn()
$('html,body').animate({
scrollTop: $("#framed").offset().top
}, 750);
}
})
希望它对你有用。 如果没有,请提供链接以实际查看您的问题,以便可以整理出来。
答案 1 :(得分:1)
lastElementTop = $('#id').position().top;
scrollAmount = lastElementTop +- something;
$('html,body').animate({scrollTop: scrollAmount},1000);