bo4kov
Продвинутый
Дата регистрации:
11.06.2012 11:21:31
Сообщений: 65
<div class="news">
<?php foreach ($news as $item): ?>
<div class="kurs">
<div class="img">
<a href="site.ru"><img src=img/img.jpg"" alt="Img" title="img" /></a>
</div>
<div class="title_a">
<a href="site.ru">Ссылка</a>
</div>
</div>
<?php endforeach; ?>
</div>
Вот js код (библиотека jquery и masonry - подключены):
<script type="text/javascript">
$(document).ready(function(){
var $container = $('.news';
$container.imagesLoaded( function() {
$container.masonry({
columnWidth: 0,
gutter : 15,
itemSelector: '.kurs'
});
});
var inProcess = false;
var num = 20;
var cat = "<? echo $this->uri->segment(2); ?>";
var url = "<? echo $url; ?>";
$(window).scroll(function func () {
if($(window).scrollTop() + $(window).height() + 500 >= $(document).height() && !inProcess) {
$.ajax({
url: url,
method: 'GET',
data: {'num' : num, 'cat' : cat},
beforeSend: function() {
inProcess = true;
$('.loader'.show();
},
complete: function() {
$('.loader'.hide();
}
}).done(function(data){
data = jQuery.parseJSON(data);
if (data.length > 0) {
$.each(data, function(index, data){
$('.news'.append('<div class="kurs"><div class="img"><a href=site.ru"><img src="img/img.jpg" alt="Img" title="img" /></a></div><div class="title_a"><a href="site.ru">Cсылка</a></div></div>'
);
});
inProcess = false;
num += 20;
}
});
}
});
});
</script>
В общем ajax запрос работает, при прокрутки страницы до самого низа подгружается контент.
Masonry jquery работает тоже нормально, но для первых 20 выведенных записей через php (не через ajax), но потом когда я прокручиваю страницу до самого низа контент подгружается но не срабатывает masonry (то есть блоки налазят друг на друга и стоят в разброс). Может как-то после ajax запросы еще раз вызывать masonry, или как?
Вот как masonry обрабатывает первые 20 записей загруженные через php (как я и хотел):
https://yadi.sk/d/VcD4EcyJUMcSf
Вот как выглядит страница когда контент погрузился:
https://yadi.sk/d/Pa2KsxHNUMchE
Как мне сделать так, чтобы подгруженные данные выглядели как первые 20 записей? Я предполагаю, что нужно masonry вызывать как-то второй раз, после загрузки ajax запроса, но как это сделать?