Интеграция Slimbox (или Lightbox) с бесконечной прокруткой
Моя личная фотогалерея использует Masonry (для упорядочивания фотографий) и Infinite scroll (чтобы сократить время загрузки фотографий). Я недавно добавил Slimbox2 (потому что по какой-то причине я не смог заставить работать Lightbox2). Slimbox2 отлично работает на первой странице, но не на следующих страницах, загруженных бесконечной прокруткой.
Я пытался использовать разные имена групп, как rel="lightbox-page1"
а также rel="lightbox-page2
или нет группировки вообще, но ни один подход не сработал. Нужно ли обновлять Slimbox при загрузке новой страницы? Создатель InfiniteScroll предлагает следующий код myLightbox.updateImageList();
, Имеет смысл? Как конвертировать его для Slimbox? Кто-то с той же проблемой, что и я, в 2011 году.
Вы можете проверить мою живую проблему здесь. Вот сценарии, которые я сейчас использую (вы можете просмотреть исходный код страницы):
<script>
$(function() {
var $container = $('#gallery');
$container.imagesLoaded(function() {
$container.masonry({
itemSelector : '.box',
columnWidth : 1,
isAnimated : true
});
});
$container.infinitescroll({
navSelector : '#page-nav', // selector for the paged navigation
nextSelector : '#page-nav a', // selector for the NEXT link (to page 2)
itemSelector : '.box', // selector for all items you'll retrieve
loading : {
finishedMsg : 'No more pages to load.',
img : '/assets/img/loading.gif'
}
},
// 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 );
});
});
});
</script>