Есть вот такой простой чат:
$(document).ready(function(){
$('.wrap').on('click', '.tabs_chat li:not(.current)', function() {
$(this).addClass('current').siblings().removeClass('current')
.parents('div.chat').find('div.box_chat').hide()
.eq($(this).index()).fadeIn(150);
});
});
function RefreshChat(data) {
$('#chat1').html(data['chat1']);
$('#chat2').html(data['chat2']);
var chat1 = $("#chat1").parent(),
chat2 = $("#chat2").parent();
chat1.scrollTop(chat1.prop('scrollHeight'));
chat2.scrollTop(chat2.prop('scrollHeight'));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div class="wrap">
<div class="chat">
<ul class="tabs_chat">
<li class="current">Чат1</li>
<li>Чат2</li>
</ul>
<div class="wrap-box-chat">
<div class="box_chat visible">
<ul id="chat1"></ul>
</div>
<div class="box_chat">
<ul id="chat2"></ul>
</div>
</div>
</div>
</div>
В интервале я получаю новые данные и отображаю в соответствующем блоке. Стандартная высота блока чата 270px. Если данных много и они не помещаются у видимую часть, то появляется скролл и он автоматически опускается вниз на самую последнюю запись. Но при этом появляется эстетический баг.
Если я подниму скролл вверх, что бы найти нужно сообщение или уже читаю его, а в этот момент обновляется чат, то скролл вновь опустится вниз и я потеряю нужное мне сообщение. Надо как-то запомнить позицию скролла. А с другой стороны, очень старые сообщения удаляются потому, если даже я запомню нужную позицию скролла, то не факт, что попаду на нужное мне сообщение.
Когда я переключаюсь на другую вкладку то я сразу попадаю на самый вверх этого блока и проходится либо опускать вручную скролл либо ждать очередного обновления чата, что бы оно само опустило сколл вниз.
Подскажи как лучше всего решить эти проблемы. Спасибо заранее.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вопрос глуповат, но я постоянно забываю, как происходит наследование и выборка(извиняюсь за французский) дочерних элементов в классах?
Как сделать плавающий сайдбар как на сайте https://wwwcitilink