2010-11-15 15 views
24

jQuery tiene una función llamada scrollTop que se puede usar para encontrar el número de píxeles ocultos sobre la vista de la página actual.Opuesto a "scrollTop" en jQuery

No estoy muy seguro de por qué, pero no hay función scrollBottom que devuelva el número de píxeles debajo de la vista de la página actual.

¿Hay un complemento jQuery que agregue esta funcionalidad? ¿O va a requerir algunas matemáticas elaboradas con la altura de la ventana/documento y el valor de scrollTop?

+6

matemáticas elaborado? ¿No sería [altura del documento] - [scrollTop] - [altura de la ventana]? –

+0

@StevePaulo Probablemente no deba usar la altura del documento junto con la altura de la ventana. Eso causará un caos entre navegadores. –

Respuesta

35

Se podría hacer un plugin bastante simple para esto:

$.fn.scrollBottom = function() { 
    return $(document).height() - this.scrollTop() - this.height(); 
}; 

Entonces llámelo en cualquier elemento que desee, por ejemplo:

$(window).scrollBottom(); //how many pixels below current view 
$("#elem").scrollBottom(); //how many pixels below element 
+0

Extraño, en mi caso '$ (ventana) .scrollBottom();' devuelve un valor negativo: es '-1 * $ (ventana) .scrollTop();' – Abdull

+2

Encontré mi problema: me encontré con este problema: http : //stackoverflow.com/q/12103208/923560. A mi archivo HTML le faltaba una declaración de tipo de documento. La solución fue agregar '' en la parte superior del archivo HTML. – Abdull

0

Usted podría intentar scrollTo plugin y hacer algo como:

$.scrollTo(document.height) 
0
function scrollBottom() 
{ 
    return $(window).scrollTop() + $(window).height(); 
} 

// example usage 
$('#footer').css('top', scrollBottom() - $('#footer').height()); 
0

Como el comportamiento predeterminado de scrollTop se desplaza a 0 al pasar un valor negativo, hice esta función que maneja scrollTop y simula un "scrollDown".

Si anchor_pos es negativo (por lo que es por encima de mi posición de desplazamiento actual), le resto de su valor desde la posición de desplazamiento actual (ya que tiene un valor negativo, estoy usando el signo +)

function jumpToAnchor(scrollable_div_selector, anchor_selector) 
{ 
    anchor_pos = $(anchor_selector).position().top; 

    //check if negative number 
    if (anchor_pos < 0) 
    { 
     anchor_pos = $(scrollable_div_selector).scrollTop() + anchor_pos; //anchor_pos is negative, so i'm substracting it 
    } 

    $(scrollable_div_selector).scrollTop(anchor_pos); 
} 
0

Así es como he calculado la distancia desde la parte inferior del elemento a la parte inferior del documento:

$(document).height() - ($('#element').offset().top + $('#element').height()); 
1

Si quieres que desplazarse hacia abajo (opuesto a “scrollTop”), tratar para usar la posición vertical en el argumento. De esta manera:

$(document).ready(function(){ 
    $("button").click(function(){ 
          //position on pixeles 
     $("body").scrollTop(1300); 
    }); 
}); 

La parte superior del cuerpo, será: $("body").scrollTop(0);

0

probar esto:

return this[0].scrollHeight - this.scrollTop() - this.height();