写大约60行here in fiddle
时遇到问题 然后它开始向上滚动!那里我做错了什么?感谢。
我希望始终保持向下滚动。
$chat = $('#chatarea');
$submit = $('#submit');
$input = $('#text')
ENTER = 13;
var addMessage = function(message) {
// create message element
$msg = $('<div>', {class: 'message hidden-message', text: message})
if($input.val().length > 0){
// append element
$chat.append($msg) ;
}
else
{
return false;}
$msg.hide().removeClass('hidden-message') ;
$msg.slideDown(function(){
// animate scroll to bottom
$chat.animate({ scrollTop: $chat.height() })
});
};
$input.on('keydown', function(e){
if(e.keyCode === 13 && $input.val().length < 1 ){
return false;
}
});
$input.on('keyup', function(e){
if(e.keyCode == 13 && $input.val().length > 1 ) {addMessage($input.val());
$input.val('');
}
else if(e.keyCode == 13 && $input.val().length == 1){
$input.val('');
e.preventDefault();
return false;}else{}
});
$submit.on('click', function(){
if($input.val().length > 1) {
addMessage($input[0].value);
$input.val('');
}
});
答案 0 :(得分:1)
问题:
.holder
的高度为1000px
,其中.chatarea
的高度为90%
,因此在您的脚本中$chat.height()
始终返回900,所以在60行左右,只要有输入,它就会滚动到900px
并保持在那里。
<强>解决方案:强>
使用此:
$chat.animate({ scrollTop: $chat.prop("scrollHeight") - $chat.height() })
或更快的动画:
$chat.animate({ scrollTop: $chat.prop("scrollHeight") - $chat.height() }, 25)
而不是:
$chat.animate({ scrollTop: $chat.height() })
答案 1 :(得分:0)
问题在$ msg.slideDown函数内,只需注释掉$ chat.animate({scrollTop:$ chat.height()})并将此代码放入$ submit.on点击功能
$(function () {
$("#chatarea").animate({
scrollTop: $('#chatarea').get(0).scrollHeight}, 1000);});
}