Bagaimana cara menentukan scrollHeight?

96

Bagaimana cara menentukan scrollHeight suatu divisi menggunakan css overflow: auto?

Saya sudah mencoba:

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

Pada akhirnya, saya mencoba membuat obrolan dan selalu menampilkan bilah gulir ke pesan saat ini di layar.

Jadi saya memikirkan sesuatu seperti berikut:

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

Terima kasih,

Brian

Brian
sumber
Apa yang salah dengan menggunakan scrollHeight ()?
Badr Hari
2
@BadrHari: Tidak ada scrollHeight()fungsi di jQuery.
TJ Crowder
itu $ ('test'). get (0) .scrollHeight ();
JFouad

Jawaban:

91

scrollHeight adalah properti javascript biasa sehingga Anda tidak membutuhkan jQuery.

var test = document.getElementById("foo").scrollHeight;
Dennis
sumber
Terima kasih! Ini berhasil untuk saya: var height = document.getElementById ("chatLog"). ScrollHeight - $ ('# chatLog'). Height (); $ ('# chatLog'). scrollTop (tinggi);
Brian
6
Bagaimana dengan dukungan browser? Semua versi utama browser mendukungnya? IE8 +?
SexyBeast
2
@Cupidvogel Halaman MDN tertaut mengatakan IE8 +
Dennis
320

Cara yang benar di jQuery adalah -

  • $('#test').prop('scrollHeight') ATAU
  • $('#test')[0].scrollHeight ATAU
  • $('#test').get(0).scrollHeight
Anmol Saraf
sumber
16
+1 untuk $ ('# test') [0] .scrollHeight, mengingat penanya sudah menggunakan jQuery.
Jackson
12
Ini harus menjadi jawaban yang diterima karena menjawab pertanyaan.
invot
Itu harus menjadi jawaban yang diterima. Perhatikan bahwa propmetode ini membutuhkan jquery versi 1.6 atau yang lebih besar. +1 dari saya
Vayne
2
Perhatikan ini hanya mengembalikan scrollHeight dari elemen "pertama" yang ditemukan dan jika ada elemen yang saat ini "tersembunyi" Anda mungkin mendapatkan nol di sini bahkan jika yang lain memiliki scrollHeight positif, FWIW :)
rogerdpack
@rogerdpack Poin bagus pak! Meskipun dalam contoh ini dia menggunakan ID sebagai pengganti kelas sebagai pemilih jadi dia harus baik-baik saja, tapi tetap saja poin yang bagus.
dave4jr