2012-02-22 6 views
10

In un elemento che ho dato CSS overflow: scroll;. Ora in jQuery voglio avere l'altezza originale (contenente l'altezza di tutti gli elementi figlio). I bambini sotto questo elemento stanno cambiando dinamicamente. Voglio avere altezza sull'evento di scorrimento. ecco il codice:altezza di scorrimento di un elemento fornisce un valore non definito

$("#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: Si getta scrollHeight is undefined errore. Cosa c'è che non va?

risposta

34

Non c'è scrollHeight in jQuery - è scrollTop():

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

alternativa, se si desidera utilizzare la scrollHeight proprietà nativa, è necessario accedere all'elemento DOM nell'oggetto jQuery direttamente, in questo modo:

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

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

+0

Grande ora funziona, puoi farmi sapere cosa è la differenza in $ ("# contenitore") [0] e $ ("# contenitore"). –

+6

'$ (" # contenitore ")' restituisce l'elemento racchiuso in un oggetto jQuery, '$ (" # contenitore ") [0]' restituisce l'elemento DOM stesso. –

10

Se si utilizza Jquery 1.6 o successivo, utilizzare il puntello per accedere al valore.

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

Versioni precedenti utilizzate per ottenere il valore da attr ma non post 1.6.

Problemi correlati