2012-06-22 50 views
12

Tôi có một lớp div = 'messages'. Tôi thêm ngày để div này qua jQuery.append() Dưới đây là những phong cách:Autoscroll div với jQuery xuống dưới cùng sau khi thêm

.messages { 
border: 1px solid #dddddd; 
padding:10px; 
height: 400px; 
overflow-x:visible; 
overflow-y: scroll; 
-webkit-border-radius: 5px; 
-moz-border-radius: 5px; 
border-radius: 5px; 
margin-bottom:10px; 
font-size:14px; 
} 

Đối autoscroll tôi sử dụng chức năng như:

receiveMessage = function (name, message, type) { 
    //adding new message 
    $("#messages").append('<strong>' + name + ": " + '</strong>' + message + '<br>'); 
    /autoscrolling to the bottom 
    $("#messages").animate({ 
     scrollTop: $("#messages").height() 
    }, 300); 
} 

Về ~ 20 tin nhắn được di chuyển bình thường, nhưng sau khi nó 'treo', tin nhắn mới không được cuộn. Phiên bản Chrome 19.0.1084.56. Tôi đang làm gì sai? Cảm ơn! Tuy nhiên,

+0

Bạn có thể cung cấp HTML hoặc tốt hơn chưa tạo ra một trường hợp thử nghiệm trên [jsFiddle] (http://jsfiddle.net)? – AbstractChaos

+0

'# messages' và' .messages'- bạn đã kết hợp chúng chưa? – Andreas

Trả lời

8

Thay đổi

scrollTop: $("#messages").height() 

để

scrollTop: $("#messages").scrollHeight 
+11

thực sự, bây giờ (Điều này làm việc: $ ('# messages') animate ({"scrollTop": $ ('# messages') [0] .scrollHeight}, "fast"); Tôi đã cố gắng trả lời của riêng tôi câu hỏi nhưng nó không được hiển thị – f1nn

+0

@ f1nn giải pháp của bạn không hoạt động. Tôi đã thử 'câu trả lời được chấp nhận' của bạn, nhưng điều đó dường như không thực hiện công việc. –

2

Giải pháp này không làm việc cho tôi, sau đây đã ...

$(document).ready(function(){ 
    $('#chat-scroll').animate({ 
    scrollTop: $('#chat-scroll').get(0).scrollHeight}, 2000); 
}); 
0

Vui lòng thử:

$(document).ready(function(){ 
    $('#chat-scroll').animate({scrollTop: $('#chat-scroll')[0].scrollHeight}, 2000); 
}); 
Các vấn đề liên quan