Comment déterminer scrollHeight?

95

Comment déterminer scrollHeight d'une division en utilisant le débordement CSS: auto?

J'ai essayé:

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

En fin de compte, j'essaie de créer un chat et d'avoir toujours la barre de défilement du message actuel à l'écran.

Alors je pensais à quelque chose comme ceci:

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

Merci,

Brian

Brian
la source
Quel est le problème avec l'utilisation de scrollHeight ()?
Badr Hari du
2
@BadrHari: Il n'y a pas de scrollHeight()fonction dans jQuery.
TJ Crowder
c'est $ ('test'). get (0) .scrollHeight ();
JFouad

Réponses:

90

scrollHeight est une propriété javascript standard, vous n'avez donc pas besoin de jQuery.

var test = document.getElementById("foo").scrollHeight;
Dennis
la source
Merci! Cela a fonctionné pour moi: var height = document.getElementById ("chatLog"). ScrollHeight - $ ('# chatLog'). Height (); $ ('# chatLog'). scrollTop (hauteur);
Brian le
6
Qu'en est-il de la prise en charge du navigateur? Toutes les versions principales des navigateurs le prennent en charge? IE8 +?
SexyBeast
2
@Cupidvogel La page MDN liée indique IE8 +
Dennis
316

Les méthodes correctes dans jQuery sont -

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

J'espère que ça aide.

Anmol Saraf
la source
16
+1 pour $ ('# test') [0] .scrollHeight, étant donné que le demandeur utilisait déjà jQuery.
Jackson
12
Cela devrait être la réponse acceptée car elle répond à la question.
invot le
Ce devrait être la réponse acceptée. Notez que cette propméthode nécessite jquery version 1.6 ou supérieure. +1 de moi
Vayne
2
Notez que cela ne renvoie que le scrollHeight du "premier" élément trouvé et si des éléments sont actuellement "cachés", vous pourriez obtenir un zéro ici même si d'autres ont un scrollHeight positif, FWIW :)
rogerdpack
@rogerdpack Bon point monsieur! Bien que dans cet exemple, il utilise un ID au lieu d'une classe comme sélecteur, il devrait donc être d'accord, mais c'est néanmoins un bon point.
dave4jr