Автоматическое увеличение высоты DIV

313
21 мая 2017, 23:14

Есть вот такой простой чат:

$(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. Если данных много и они не помещаются у видимую часть, то появляется скролл и он автоматически опускается вниз на самую последнюю запись. Но при этом появляется эстетический баг.

  1. Если я подниму скролл вверх, что бы найти нужно сообщение или уже читаю его, а в этот момент обновляется чат, то скролл вновь опустится вниз и я потеряю нужное мне сообщение. Надо как-то запомнить позицию скролла. А с другой стороны, очень старые сообщения удаляются потому, если даже я запомню нужную позицию скролла, то не факт, что попаду на нужное мне сообщение.

  2. Когда я переключаюсь на другую вкладку то я сразу попадаю на самый вверх этого блока и проходится либо опускать вручную скролл либо ждать очередного обновления чата, что бы оно само опустило сколл вниз.

Подскажи как лучше всего решить эти проблемы. Спасибо заранее.

READ ALSO
Анимация окружности в 3djs

Анимация окружности в 3djs

Есть некая окружностьПоявление которой нужно анимировать

278
css наследование или вроде того

css наследование или вроде того

Вопрос глуповат, но я постоянно забываю, как происходит наследование и выборка(извиняюсь за французский) дочерних элементов в классах?

277
Как реализовать плавающий сайдбар

Как реализовать плавающий сайдбар

Как сделать плавающий сайдбар как на сайте https://wwwcitilink

280