2014-12-03 84 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

相关问题