¿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.