Я знаю, что InfiniteScroll и масонство хорошо работают вместе. Но я использую Infinite Scroll Extension Yii (называемый yiinfinite-scroll) и пытаюсь применить масонство на нем. Бесконечный Свиток для себя отлично работает, масонство для себя тоже. Но после того, как InfiniteScroll попытается загрузить новый набор изображений (у меня есть страница с изображениями), часть обратного вызова InfiniteScroll, похоже, не срабатывает, потому что недавно добавленные элементы не содержат в ней каменного кода и появляются позади первые видимые элементы. (Я знаю, что эта ошибка часто сообщается, но решения, которые я нашел до сих пор, не работали для меня).Yii Framework + Бесконечный свиток + Каменная обратная связь не работает
Моя структура для показа картина выглядит следующим образом:
<div class="items">
<div class="pic">...</pic>
<div class="pic">...</pic>
...
</div>
Первая загрузка страницы выглядит следующим образом
<div class="items masonry" style="...">
<div class="pic masonry-brick" ...></div>
<div class="pic masonry-brick" ...></div>
...
</div> // everything's fine, masonry is injected into the code
После бесконечной прокрутки динамически загружает новые изображения, они выглядят так:
<div class="items masonry" ...></div>
<div class="pic masonry-brick" ...></div>
...
// appended pics:
<div class="pic"></div>
<div class="pic"></div>
</div> // so no masonry functionality was applied
Мой кладочный код:
$(function(){
var $container = $('.items');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.pic',
columnWidth: 405
});
});
});
$container.infinitescroll({
// normally, the options are found here. but as I use infinitescroll as a Yii extension, the plugin is already initiated with options
}
},
// trigger Masonry as a callback
function(newElements) {
// hide new items while they are loading
var $newElems = $(newElements).css({ opacity: 0 });
// ensure that images load before adding to masonry layout
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry('appended', $newElems, true);
});
});
});
Я также попытался скопировать и заменить текущий файл InfiniteScroll-min.js в папке расширения самой новой. Тот же эффект ...
С наилучшими пожеланиями, Себастьян