我正在使用 Swiper 在 SlideEndChange 上动态附加和预先添加幻灯片,但是在附加新幻灯片后,activeSlide 会跳回到开头。
这是我到目前为止所尝试的:
var noOfPages = 7;
var galleryTop = new Swiper('.gallery-top', {
spaceBetween: 10,
effect: 'slide',
onSlideChangeEnd: function(swiper){updateReadingPages(swiper);}
});
var galleryThumbs = new Swiper('.gallery-thumbs', {
spaceBetween: 10,
centeredSlides: true,
slidesPerView: 3,
touchRatio: 0.2,
slideToClickedSlide: true
});
galleryTop.params.control = galleryThumbs;
galleryThumbs.params.control = galleryTop;
var startPage = 1;
var endPage = 5;
if(noOfPages > 5){
endPage = 5;
}else{
endPage = noOfPages;
}
var i = 1;
for(i;i<=5;i++){
initLoaded(i,"append");
}
var swipeLeftForFirstTime = false;//To prevent slideTo(activeIndexTwo) form setting previousIndex at the first time after reaching End of Pages....
function updateReadingPages() {
if (galleryTop.activeIndex > galleryTop.previousIndex) { //Swipe Right
if (galleryTop.activeIndex >= 3) {
//If activeSlide is fourth slide, append a new slide and remove slide at index [0].
if (endPage <noOfPages) {
endPage++;
startPage++;
//alert("swipeRight And endPage = " + startPage + "and" +endPage);
initLoaded(endPage,"append");
var activeIndexOne = galleryTop.activeIndex;
galleryTop.removeSlide(0);
galleryThumbs.removeSlide(0);
galleryTop.slideTo(activeIndexOne, 0, false);
}else{
swipeLeftForFirstTime = true;
}
}
} else {
//Swipe Left
if (galleryTop.activeIndex <= 2) {
//alert("swipeLeft And startPage = " + startPage);
if (startPage > 1) {
endPage--;
startPage--;
initLoaded(startPage,"prepend");
var activeIndexTwo = galleryTop.activeIndex;
galleryTop.removeSlide(5);
galleryThumbs.removeSlide(5);
if(swipeLeftForFirstTime){
galleryTop.slideTo(activeIndexTwo, 0, false);
}else{
galleryTop.slideTo(activeIndexTwo-1, 0, false);
}
}
}
}
}
function initLoaded(number,option){
if(option === "append"){
galleryTop.appendSlide('<div class="swiper-slide" width="100%"; height="300px">'+number+'</div>');
}else{
galleryTop.prependSlide('<div class="swiper-slide" width="100%"; height="100px">'+number+'</div>');
}
if(option === "append"){
galleryThumbs.appendSlide('<div class="swiper-slide">Thumb '+number+'</div>');
}else{
galleryThumbs.prependSlide('<div class="swiper-slide">Thumb '+number+'</div>');
}
}
编辑:在 JSFiddle 上添加工作功能和示例...感谢 Rafael Lepkoski