2012-06-05 9 views
5

estoy usando este pequeño script para definir si el user've desplaza a la parte inferior"Tipo de desplazamiento infinito". Que sea inferior fuego antes

$(window).scroll(function(){ 

    if($(window).scrollTop() == $(document).height() - $(window).height()){ 
     if(!taskFired){ 
      taskFired = true; 
      $("#loading_gif").css("display", "block"); 
      setTimeout(loadMoreMabs, 1500); 
     } 
    } 

}); 

Pero me wa no es para disparar el loadMoreMabs función antes de que se alcance la parte inferior . ¿Como podría hacerlo? He intentado + y - con las alturas, pero es como si estuviera experimentando con algo que realmente no entiendo.

Respuesta

8

Lo que su título de la pregunta sugiere que deseas

restar un valor de $(document).height() algo así como 50 para iniciar la carga de 50 píxeles desde la parte inferior.

if($(window).scrollTop() <= ($(document).height() - 50) - $(window).height()){ 

Aquí está una pequeña demostración en jsFiddle, hice una función ficticia para satisfacer las loadMoreMabs funcionan

http://jsfiddle.net/sg3s/UwXaw/

incendios cada vez que están cerca de la parte inferior y los 1.500 ms expirar.

Ahora para hacer que dispare (inmediatamente) SÓLO si llega al fondo.

(ya que en realidad sugiere otra cosa)

http://jsfiddle.net/sg3s/UwXaw/1/

El truco es probablemente el >= en la ecuación, asegurándose de que se dispara si el scrollTop es igual o mayor que la del documento menos la altura de la ventana ...

+0

Muy bonito. ¡Gracias! :-) He intentado esto estoy seguro, pero se me olvidó el extra() Creo :) – skolind

+0

@Kolind Sí, esos son importantes: p – sg3s

+0

@Kolind como consejo, es posible que desee realizar un seguimiento de la posición scrollTop y agregar un descarte esa afirmación de que solo vuelve a activar la función si el nuevo valor en ese evento es SUPERIOR al que usted mantuvo al tanto. Esto asegura que el evento solo se active cuando las personas se desplacen hacia ABAJO. – sg3s

Cuestiones relacionadas