2012-11-01 84 views
0

具有元素如這樣:滾動到底部時JQuery警報?

<div id="threads-list" style="overflow-y: scroll; height: 200px;"> 
// Posts 
</div> 

如何提醒()當用戶已經達到按鈕(或者是從做10px的)?

這是我現在想:

$('#threads-list').scroll(function() { 
    if ($('#threads-list').height() + $('#threads-list').scrollTop() == document.getElementById('threads-list').offsetHeight) { 
     console.log('do'); 
     } 
    }); 

看來問題與.offsetHeight這回一樣.height()(均爲200像素),這是容器的高度而不是內容在內部,我認爲獲得內容的正確高度將是解決問題的關鍵。

回答

0

offsetHeight是錯誤的檢查。試試這個:

$('#threads-list').scroll(function() { 
    var el = $(this); 
    if (el.height() + el.scrollTop() === this.scrollHeight) { 
     alert('do'); 
    } 
});​ 

scrollHeight是整個元素的高度,包括目前通過滾動隱藏的部分。

小提琴:http://jsfiddle.net/caFwW/

0

你應該做

var container = $('#threads-list'), 
    maxScroll = container[0].scrollHeight - container.height(), 
    threshold = 10, 
    endFlag = false; 

container.on('scroll', function(e){ 
    if (maxScroll - container.scrollTop() < threshold){ 
     if (!endFlag){ 
      endFlag = true; 
      console.log('The END!'); 
     } 
    } else { 
     endFlag = false; 
    } 
}); 

演示在

http://jsfiddle.net/gaby/vXzk3/1/


我使用了一個標誌,以避免做你想要什麼,在年底多次..