2011-01-11 66 views
0

我做了以下内容:的.html&然后window.scrollTo

首先,注入到HTML页面(很多),然后增加窗口滚动条:

$("#XXXX").html("LOTS OF HTML").show(); 

然后我想要向下滚动到页面末尾:

window.scrollTo(0,$(document).height()); 

问题是页面从不向下滚动。我做了一些console.logging,scrollTo在运行注入html()的HTML之前运行。我在注入HTML的JS中尝试了这一点,然后我尝试在HTML注入中进行滚动,但没有任何区别。

任何想法?

+0

是否在AJAX调用中注入?您可以在注入之后调用它,或者将滚动放置在`setTimeout(...)`中,并让浏览器有时间赶上。 – 2011-01-11 23:40:06

+0

注入是在AJAX调用中。我想避免setTimeout,这是一个总是在道路上产生问题的黑客。 – AnApprentice 2011-01-11 23:40:53

+0

如果只有.html()有一个回调!我非常难过,但我会考虑一下。 – 2011-01-11 23:41:02

回答

1

下面是一些尝试:

 
$.ajax({ 
     //other params 
     //params 
     success: function(data) { 
      $("#XXXX").html(data).show(); 
     } 
     complete: function() { 
      window.scrollTo(0,$(document).height()); 
     } 
    }); 

成功功能时,呼叫成功运行,完整的功能之后运行,所以它可能工作!

这里的jQuery docs on .ajax()

2

作为替代,这里是一个不同的方法(套内谁都希望它)。我已经扩展jQuery来添加一个“ScrollToBottom”函数。你可以用append/html/text函数将其放在一行中,并在之后调用。

的设置:

;(function($){ 
    $.fn.extend({ 
     scrollToBottom: function(){ 
      window.scrollTo(0,$(document).height()); 
      return this; // allow chaining 
     } 
    }); 
    // alias in case you want to call it individually 
    $.scrollToBottom = $(document).scrollToBottom(); 
})(jQuery); 

执行:

<head> 
    $(function(){ 
     var data = ''; 
     for (var d = 0; d < 255; d++) 
      data += '<p>Hello, world from me!</p>'; 

     $('#demo').html(data).scrollToBottom(); 
    }); 
</head> 
<body> 
    <div id="demo"></div> 
</body> 

结果:jsFiddle

编辑增加了一个别名,以允许它在自己的调用。