2012-02-22 12 views
10

En un elemento que he dado CSS overflow: scroll;. Ahora en jQuery quiero tener su altura original (que contiene la altura de todos los elementos del niño). Los niños bajo este elemento cambian dinámicamente. Quiero tener altura en el evento de desplazamiento. Aquí está el código:scrollheight de un elemento da un valor indefinido

$("#container").scroll(function(e) { 
    scrollAll(); 
}); 

function scrollAll(){ 
    var elemHeight = $("#container").scrollHeight; 
    var scrollHeight = $("#scrollbars").scrollHeight; 
    var ratio = elemHeight/scrollHeight; 

    $("#outup").html(elemHeight +" and "+ scrollHeight +" ratio "+ ratio +" = "+ ($("#container").scrollTop())); 
} 

Problema: Se lanza scrollHeight is undefined error. ¿Qué pasa?

Respuesta

34

No hay scrollHeight en jQuery - es scrollTop():

var elemHeight = $("#container").scrollTop(); 
var scrollHeight = $("#scrollbars").scrollTop(); 

Alternativamente, si desea utilizar la scrollHeight propiedad nativa, lo que necesita para acceder al elemento DOM en el objeto jQuery directamente como aquí:

var elemHeight = $("#container")[0].scrollHeight; 
var scrollHeight = $("#scrollbars")[0].scrollHeight; 
+0

He pasado, http://stackoverflow.com/questions/8100099/checking-for-scrollheight-of-an-element-sometimes-returning-0 –

+0

Genial, está funcionando ahora, ¿me puede decir qué es la diferencia en $ ("# contenedor") [0] y $ ("# contenedor"). –

+6

'$ (" # contenedor ")' devuelve el elemento envuelto en un objeto jQuery, '$ (" # contenedor ") [0]' devuelve el elemento DOM en sí. –

10

Si está utilizando Jquery 1.6 o superior, use prop para acceder al valor.

$("#container").prop('scrollHeight') 

Las versiones anteriores solían obtener el valor de attr pero no la publicación 1.6.

Cuestiones relacionadas