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


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;

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.