¿Cómo determino scrollHeight?


95

¿Cómo determino el scrollHeight de una división usando css overflow: auto?

He intentado:

$('test').scrollHeight();
$('test').height(); but that just returns the size of the div not all the content

En última instancia, estoy tratando de crear un chat y siempre tengo la barra de desplazamiento al mensaje actual en la pantalla.

Entonces estaba pensando en algo como lo siguiente:

var test = $('test').height();
$('test').scrollTop(test);

Gracias,

Brian


¿Qué hay de malo en usar scrollHeight ()?
Badr Hari

2
@BadrHari: No hay scrollHeight()función en jQuery.
TJ Crowder

es $ ('prueba'). get (0) .scrollHeight ();
JFouad

Respuestas:


90

scrollHeight es una propiedad de JavaScript normal, por lo que no necesita jQuery.

var test = document.getElementById("foo").scrollHeight;

¡Gracias! Esto funcionó para mí: var height = document.getElementById ("chatLog"). ScrollHeight - $ ('# chatLog'). Height (); $ ('# chatLog'). scrollTop (altura);
Brian

6
¿Qué pasa con la compatibilidad con el navegador? ¿Todas las versiones principales de los navegadores lo admiten? IE8 +?
SexyBeast

2
@Cupidvogel La página MDN vinculada dice IE8 +
Dennis

316

Las formas correctas en jQuery son:

  • $('#test').prop('scrollHeight') O
  • $('#test')[0].scrollHeight O
  • $('#test').get(0).scrollHeight

Espero eso ayude.


16
+1 por $ ('# test') [0] .scrollHeight, dado que el autor de la pregunta ya estaba usando jQuery.
Jackson

12
Esta debería ser la respuesta aceptada, ya que responde a la pregunta.
invot

Debería ser la respuesta aceptada. Tenga en cuenta que el propmétodo requiere jquery versión 1.6 o superior. +1 de mí
Vayne

2
Tenga en cuenta que esto solo devuelve el scrollHeight del "primer" elemento encontrado y si algún elemento está actualmente "oculto", puede obtener un cero aquí incluso si otros tienen un scrollHeight positivo, FWIW :)
rogerdpack

@rogerdpack ¡Buen punto señor! Aunque en este ejemplo está usando una ID en lugar de una clase como selector, por lo que debería estar bien, pero es un buen punto.
dave4jr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.