2011-01-11 17 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

編輯增加了一個別名,以允許它在自己的調用。