Como determino scrollHeight?

94

Como determino scrollHeight de uma divisão use overflow de css: auto?

Eu tentei:

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

No final das contas, estou tentando criar um bate-papo e sempre ter a barra de rolagem para a mensagem atual na tela.

Então, eu estava pensando algo como o seguinte:

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

Obrigado,

Brian

Brian
fonte
O que há de errado em usar scrollHeight ()?
Badr Hari
2
@BadrHari: Não há scrollHeight()função no jQuery.
TJ Crowder
é $ ('teste'). get (0) .scrollHeight ();
JFouad de

Respostas:

88

scrollHeight é uma propriedade javascript regular, então você não precisa do jQuery.

var test = document.getElementById("foo").scrollHeight;
Dennis
fonte
Obrigado! Isso funcionou para mim: var height = document.getElementById ("chatLog"). ScrollHeight - $ ('# chatLog'). Height (); $ ('# chatLog'). scrollTop (height);
Brian
6
E quanto ao suporte do navegador? Todas as principais versões de navegadores suportam isso? IE8 +?
SexyBeast
2
@Cupidvogel A página MDN vinculada diz IE8 +
Dennis
314

Maneiras corretas em jQuery são -

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

Espero que ajude.

Anmol Saraf
fonte
16
+1 para $ ('# test') [0] .scrollHeight, dado que o solicitante já estava usando jQuery.
Jackson
12
Essa deve ser a resposta aceita, pois responde à pergunta.
Invot de
Deve ser a resposta aceita. Observe que o propmétodo requer jquery versão 1.6 ou superior. +1 de mim
Vayne
2
Observe que isso retorna apenas o scrollHeight do "primeiro" elemento encontrado e se algum elemento estiver "escondido", você pode obter um zero aqui, mesmo se outros tiverem um scrollHeight positivo, FWIW :)
rogerdpack
@rogerdpack Bom ponto, senhor! Embora neste exemplo ele esteja usando um ID em vez de uma classe como seletor, então ele deve estar bem, mas mesmo assim é um bom ponto.
dave4jr