Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if scrollbar is at the bottom

How can you check if the scroll bar is positioned at the bottom? Using JQuery or JavaScript

like image 410
redoc01 Avatar asked Dec 12 '11 20:12

redoc01


2 Answers

You find the height of the scrolling container, then compare that to the scroll position. If they are the same, then you have reached the bottom.

<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: a little testing in a js fiddle and I realized the previous version is incorrect. You can use a DOM property to find out how much scrolling there is a perform a little math with the height of the element like so

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

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

like image 96
Matthew Cox Avatar answered Sep 28 '22 17:09

Matthew Cox


This is working well for my chat window. It also detects if the content isn't long enough to be scrolled.

function atBottom(ele) {
    var sh = ele.scrollHeight;
    var st = ele.scrollTop;
    var ht = ele.offsetHeight;
    if(ht==0) {
        return true;
    }
    if(st == sh - ht)
        {return true;} 
    else 
        {return false;}
}
like image 30
James Reinsch Avatar answered Sep 28 '22 16:09

James Reinsch