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


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;

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.