2011-12-12 42 views

Trả lời

14

Bạn tìm chiều cao của vùng chứa cuộn, sau đó so sánh với vị trí cuộn. Nếu chúng giống nhau, thì bạn đã đạt tới đáy.

<div style="overflow: auto; height: 500px"> 
</div> 

$(document).ready(function() 
{ 
    $('div').scroll(function() 
    { 
     var div = $(this); 
     if (div.height() == div.scrollTop() + 1) //scrollTop is 0 based 
     { 
      alert('Reached the bottom!"); 
     } 
    }); 
}); 

Edit: một thử nghiệm nhỏ trong một fiddle js và tôi nhận ra các phiên bản trước là không chính xác. Bạn có thể sử dụng một tài sản DOM để tìm ra bao nhiêu di chuyển có một thực hiện một chút toán với chiều cao của phần tử như vậy

 var div = $(this); 
     if (div[0].scrollHeight - div.scrollTop() == div.height()) 
     { 
      alert('Reached the bottom!'); 
     } 

http://jsfiddle.net/Aet2x/1/

+0

[scrollHeight không được giới thiệu trong IE cho đến phiên bản 8, mặc dù] (https://developer.mozilla.org/en/DOM/element.scrollHeight#Browser_compatibility) –

+1

@DavidHedlund Nếu anh ta đang tìm kiếm một cách tiếp cận tương thích với IE 6 và 7 thì điều này sẽ không hoạt động, bạn là chính xác. Anh ta không đưa ra bất kỳ chi tiết nào về các yêu cầu hỗ trợ trình duyệt. –

+0

Điều này không hiệu quả đối với tôi - tuy nhiên, nếu tôi so sánh nó với div.innerHeight thay vào đó, nó hoạt động. Tôi giả định margin/padding đang chơi vào điều này bằng cách nào đó? Tôi không hoàn toàn chắc chắn. – GlyphGryph

0

Bạn có thể kiểm tra nếu các yếu tố scrollTop bằng phần tử innerHeight.

if($('div').scrollTop() == $('div').innerHeight()){ 
    //Reached the bottom 
} 
2

này làm việc cho tôi (sử dụng jQuery):

$(document).ready(function(){ 
    $('div').scroll(function(){ 
    //scrollTop refers to the top of the scroll position, which will be scrollHeight - offsetHeight 
    if(this.scrollTop == (this.scrollHeight - this.offsetHeight)) { 
     console.log("Top of the bottom reached!"); 
    } 
    }); 
}); 

Taken từ here.

+0

Lấy từ đây. đã giúp tôi, như tôi đã mong đợi :) –

Các vấn đề liên quan