我可以使用this.realIndex
获取当前幻灯片索引,如documentation所示,但是this.previousIndex
不能产生先前活动幻灯片的realIndex。相反,它提供了activeIndex
的等效项,如滑块循环时所反映的那样。如何获得先前活动幻灯片的realIndex
?这是Swiper中的错误吗?这可能需要进入本地存储吗?
这是一支笔,我将幻灯片索引记录到控制台。请注意previousIndex
的作用是什么:https://codepen.io/thenomadicmann/pen/GRRPeWG?editors=1111
答案 0 :(得分:2)
this.previousIndex - 1
应该为您提供先前活动幻灯片的realIndex
,如果this.previousIndex - 1
的值为-1
,那就意味着没有先前活动的幻灯片,这就是一个陷阱。刚刚初始化了滑动器,但尚未完成滑动。这是因为初始化滑动程序时,this.previousIndex
与activeIndex
是initialized。
答案 1 :(得分:0)
@neevany很近,让我走上了正轨。但是,对于希望使用slideChange事件在循环的Swiper中访问previousIndex的任何人,您不仅需要纠正他描述的-1索引问题,还需要纠正在swwiper循环时发生的double slideChange事件。下面的代码:
// Have to use previousIndex in this fashion due to a bug in Swiper.js as of 11/21/19
let previousIndex = this.previousIndex - 1;
if ( previousIndex == -1 ) {
previousIndex = 0;
} else if ( previousIndex == document.querySelectorAll( '.swiper-slide' ).length ) { // When swiper loops, slideChange gets fired twice and messes up animations. This prevents it from doing so.
return;
}
答案 2 :(得分:0)
对我来说,以前的答案没有帮助。 我创建了一个将swiper.realIndex存储在变量中的函数。然后,我只是在pagechange上更新变量。
var previousIndex;
function getPreviousIndex(){
previousIndex = swiper.realIndex;
};
getPreviousIndex();
swiper.on('slideChange', function () {
getPreviousIndex();
});