无法在jquery .load()外部内容后滚动

时间:2012-08-24 08:40:37

标签: javascript jquery dom scroll

我在尝试在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插件

2 个答案:

答案 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);