2014-12-03 86 views
1

我有一個jScrollPane聊天窗口。問題是,當我提交一條消息時,它不會向下滾動到我寫的最後一個單詞/行,它始終是一條線。jScrollPane在內容更新後不滾動到底部

$('body').delegate('#private-form', 'submit', function() { 
    var sendMessage = $(this).find('input.private-message').val(); 
    if (!empty(sendMessage)) { 
     socket.emit('send private message', { 
      'message': sendMessage, 
      'username': $(this).find('input.send-to').val() 
     }); 
     $(this).find('input.private-message').val(''); 
     var data = '' + 
      '<div class="person">' + 
      '<img src="img/avatar.png" alt="">' + 
      '<div class="details">' + 
      '<div class="chat">' + 
      '<p>' + sendMessage + '</p>' + 
      '</div>' + 
      '<div class="chat-view">' + 
      '<p>10 min ago</p>' + 
      '</div>' + 
      '</div>' + 
      '</div>'; 
     var settings = { 
      showArrows: false, 
      autoReinitialise: true, 
     }; 
     var pane = $('.chat-single'); 
     pane.jScrollPane(settings); 
     var contentPane = pane.data('jsp').getContentPane(); 
     contentPane.append(
      data 
     ); 
     pane.data('jsp').scrollToBottom(); 
    } 
    return false; 
}); 

標記:

<div class="chatters"> 
    <div class="chat-single"> 

    </div> 
</div> 

樣式:

.chatters { 
    padding: 10px 0; 
    height: 75%; 
    width: auto; 
    max-width: 390px; 
} 

.chat-single{ 
    height:100% 
} 

回答

0

追加data後,滾動到頁面底部之前調用reinitialisepane.data('jsp')

contentPane.append(
    data 
); 
pane.data('jsp').reinitialise(); 
pane.data('jsp').scrollToBottom(); 

另外,如果你使用autoReinitialise請務必在默認情況下,每sencond(每500ms)執行此重新初始化兩次,因爲提供合理autoReinitialiseDelay

+0

太棒了!你這個人,你建議什麼時候用autoReinitialiseDelay? – Uffo 2014-12-07 15:45:20

+0

@Uffo在一般情況下,你不應該需要'autoReinitialise',它完全是延遲。如果沒有該屬性,請檢查該頁面是否正常工作,如果發現不需要,請將其除去。否則,如果它破壞了網站的功能,我會建議大約2-5千(毫秒)的延遲值。如果您認爲我幫助解決了您的問題,請考慮獎勵獎勵,因爲如果在7天結束時自動頒發獎勵,則只獎勵一半獎勵。 – SeinopSys 2014-12-07 15:47:52

+0

謝謝,是的,我會在23小時內獎勵賞金,我不會忘記,謝謝! – Uffo 2014-12-07 16:03:38

相關問題