Бесконечная прокрутка вверх как в чате предыдущих сообщений
Друзья. Не могу решить проблему бесконечной прокрутки предыдущих сообщений в чате.
Вроде работает, но выводит не правильно. Не в той последовательности. Решение где-то на поверхности, но блин.... не могу решить.
при нажатии на "Предыдущие сообщения" (#prev-mess) первый раз ajax подгружает блоки правильно - выше предыдущих #im-dialog-prev, а последующие нажатия вставляет ниже предыдущих, хотя хочется выше. Как это победить?
$(document).ready(function($)
{
$(".im-dialog").animate({ scrollTop: 20000000 }, "slow");
});
var block_show = false;
function WatchMore()
{
var $target = $("#showmore-triger");
if (block_show)
{
return false;
}
var page = $target.attr("data-page");
page++;
block_show = true;
$.ajax({
url: "/new/im/ajax/previus_messages.php?id=26675&page=" + page,
dataType: "html",
success: function(data)
{
$(".im-dialog #im-dialog-prev").append(data);
block_show = false;
}
});
console.log("/new/im/ajax/previus_messages.php?id=26675&page=" + page);
$target.attr("data-page", page);
if (page >= $target.attr("data-max"))
{
$target.remove();
}
}
$("#prev-mess").click(function()
{
WatchMore();
});
.im-dialog
{
height:300px;
padding:0 8px 0 0;
margin:16px -8px 16px 0;
overflow:auto;
}
.im-dialog-left
{
float:left;
max-width:85%;
background-color:#f4f4f4;
border-radius: 0 12px 12px 12px;
padding:12px;
border:1px solid #f0f0f0;
}
.im-dialog-right
{
float:right;
max-width:85%;
background-color:#FFFFFF;
border:1px solid #f0f0f0;
border-radius: 12px 0 12px 12px;
padding:12px;
}
.clearer {clear:both;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="im-dialog">
<div id="showmore-triger" data-page="1" data-max="3"><a href="javascript:void(0);" id="prev-mess">предыдущие сообщения</a></div>
<div id="im-dialog-prev"></div>
<div class="im-dialog-left">
текст текст текст
</div>
<div class="clearer"></div>
<div class="im-dialog-right">
текст 2
</div>
<div class="clearer"></div>
<div class="im-dialog-left">
текст3 текст4 текст 4
</div>
<div class="clearer"></div>
<div class="im-dialog-right">
текст 4
</div>
<div class="clearer"></div>
</div>
https://jsfiddle.net/hibinyru/xw3cd8k2/7/
PS. ну и если вдруг будет время , подскажите, пожалуйста, еще как сделать чтобы в текущем div с диалогами при нажатии "предыдущие сообщения" был автоматом скрол на нижнее сообщение открывшегося из ajax блока?
Ответы (1 шт):
вы используете метод append, который добавлвяет контент в конец блока, а требуется добавлять в начало. Для этого есть метод prepend.