2011-12-12 11 views

Respuesta

14

Encuentra la altura del contenedor desplazable y luego compara eso con la posición de desplazamiento. Si son lo mismo, entonces has llegado al final.

<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: una pequeña prueba en un jidid y me di cuenta de que la versión anterior es incorrecta. Puede utilizar una propiedad DOM para averiguar la cantidad de desplazamiento hay un realizar un poco de matemáticas con la altura del elemento al igual que

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

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

+0

[scrollHeight no se introdujo en IE hasta la versión 8, sin embargo] (https://developer.mozilla.org/en/DOM/element.scrollHeight#Browser_compatibility) –

+1

@DavidHedlund Si está buscando un enfoque compatible IE 6 y 7, entonces esto no funcionará, estás en lo cierto. Él no ha dado ningún detalle sobre los requisitos de soporte del navegador. –

+0

Esto no funciona para mí, sin embargo, si lo comparo con div.innerHeight, funciona. Supongo que el margen/relleno está jugando en esto de alguna manera? No estoy del todo seguro. – GlyphGryph

0

Puede comprobar si el elemento scrollTop es igual a el elemento innerHeight.

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

Esto funcionó para mí (con 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!"); 
    } 
    }); 
}); 

Tomado de here.

+0

Tomado de aquí. me ayudó, como estaba esperando :) –

Cuestiones relacionadas