回答:
ここでの他のソリューションは、コンテンツがたくさんあるdivには実際には機能しません-(divのコンテンツの高さの代わりに)divの高さまでスクロールダウンして「最大になります」。そのため、divの高さがコンテンツの2倍を超えていない限り、これらは機能します。
ここに正しいバージョンがあります:
$('#div1').scrollTop($('#div1')[0].scrollHeight);
またはjQuery 1.6+バージョン:
var d = $('#div1');
d.scrollTop(d.prop("scrollHeight"));
またはアニメーション:
$("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000);
div1
?
d = $('#div1'); $(d).scrollTop( $(d).prop("scrollHeight") );
私がここで見ることができるすべての答えは、現在「受け入れられている」ものを含めて、実際には間違っているため、
scrollTop = scrollHeight
一方、正しいアプローチは次のように設定することです。
scrollTop = scrollHeight - clientHeight
言い換えると:
$('#div1').scrollTop($('#div1')[0].scrollHeight - $('#div1')[0].clientHeight);
またはアニメーション:
$("#div1").animate({
scrollTop: $('#div1')[0].scrollHeight - $('#div1')[0].clientHeight
}, 1000);
更新:完全な回答については、Mike Toddのソリューションを参照してください。
$("#div1").animate({ scrollTop: $('#div1').height()}, 1000);
アニメーション化したい場合(1000ミリ秒以上)。
$('#div1').scrollTop($('#div1').height())
瞬時にしたい場合。
これらはどれもうまくいきませんでした。私は、Webアプリ内にFacebookメッセンジャーに似たメッセージシステムを使用しており、メッセージをdivの下部に表示したいと考えていました。
これは、扱いやすい基本的なJavaScriptで動作しました。
window.onload=function () {
var objDiv = document.getElementById("MyDivElement");
objDiv.scrollTop = objDiv.scrollHeight;
}
Vueに移行しようとしているレガシーコードベースで作業しています。
私の特定の状況(ブートストラップモーダルにラップされたスクロール可能なdiv)では、v-ifに新しいコンテンツが表示され、ページを下にスクロールする必要がありました。この動作を機能させるには、vueが再レンダリングを完了するのを待ってから、jQueryを使用してモーダルの下部までスクロールする必要がありました。
そう...
this.$nextTick(function() {
$('#thing')[0].scrollTop = $('#thing')[0].scrollHeight;
})
以下のコードを使用して、ページの読み込み時にdivの一番下までスクロールできます。
$(document).ready(function(){
$('div').scrollTop($('div').scrollHeight);
});
scrollTopでscrollHeightとclientHeightをチェックして、以下のコードのようにdivの一番下までスクロールできます。
$('#div').scroll(function (event) {
if ((parseInt($('#div')[0].scrollHeight) - parseInt(this.clientHeight)) == parseInt($('#div').scrollTop()))
{
console.log("this is scroll bottom of div");
}
});