我创建了一个实时聊天,但是当有新消息时我无法自动向下滚动。
我的Div如下:
<div id = "serverChat" style="overflow:scroll; height:400px;"></div>
我尝试使用这样的jquery:
var $chat = $('#serverChat');`
$chat.animate({scrollTop: $chat.get(0).scrollHeight}, 2000);
我不太确定如何让它发挥作用。
谢谢!
答案 0 :(得分:1)
您可以像这样获取scrollHeight:
document.getElementById('id').scrollHeight
之后只需将其传递给动画即可。
示例:强>
$(document).on('click', '#clickme', function(){
var sh = document.getElementById('serverChat').scrollHeight;
$("#serverChat").animate({ scrollTop: sh }, 600);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div id="serverChat" style="overflow:scroll; height:200px;">
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
s<br>
</div>
<button id="clickme">Click me</button>
答案 1 :(得分:0)
滚动到块结尾的方法:
function scrollToEnd(block, duration) {
// if block not passed scroll to end of page
block = block || $("html, body");
duration = duration || 2000;
// you can pass also block's jQuery selector instead of jQuery object
if(typeof block === 'string') {
block = $(block);
}
// if exists at list one block
if (block.length) {
block.animate({
scrollTop: block.get(0).scrollHeight
}, duration);
}
}
您需要在将新消息添加到聊天块后调用此方法:
scrollToEnd('#serverChat');
您也可以使用此方法向下滚动任何其他块或整页。
<强> jsFiddle 强>
function scrollToEnd(block, duration) {
// if block not passed scroll to end of page
block = block || $("html, body");
duration = duration || 2000;
// you can pass also block's jQuery selector instead of jQuery object
if(typeof block === 'string') {
block = $(block);
}
// if exists at list one block
if (block.length) {
block.animate({
scrollTop: block.get(0).scrollHeight
}, duration);
}
}
scrollToEnd('#serverChat');
scrollToEnd('#otherBlock', 5000);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id = "serverChat" style="overflow:scroll; height:400px;">
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
<p>Message</p>
<p style="float:right;">Answer</p>
</div>
<div id = "otherBlock" style="overflow:scroll; height:200px;">
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
</div>
&#13;