同一頁面多個swiper出現錯亂問題
阿新 • • 發佈:2019-01-01
第一次使用swiper出現的各種奇葩問題,搞得頭疼
1.同一頁面存在多個swiper時,不能以通用的id或者class為定位標準,容易出現同時找到多個物件的問題,需要確保id和class的唯一性
2.動態建立swpier,append到html中時,swiper-slide必須放在swiper-wrapper中,否則初始化後,會因為結構不完整報錯
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">slider1</div>
</div>
</div>
3.動態建立swiper的slide頁時,使用源生的swiper.appendSlide()代替replace(),執行效率更高,並且不容易出現錯亂
專案案例:產線屏-電子展板與人員績效多個tab來回切換時,電子展板初始化後,可以正常上下頁切換重新整理;從人員績效切換回來的時候,出現無法下頁切換,之能上頁切換的問題,F12檢視Elements發現swiper的結構發生變化,猜測由於replace()替換前後的清空,並未完全清空上一次載入的slide,導致多個slide重複,無法出現切換下頁的情況
4.銷燬swiper
if(window.swiper){
//銷燬swiper
window.swiper.destory(false);
}
5.同一網頁 多個tab,隱藏顯示多個swiper出現的不同問題
例如:tab1:圖片輪播mySwiper1
tab2:訊息資訊輪播mySwiper2
問題:多個swiper同時使用pagination(分頁器的圖示),swiper容易出現錯亂
解決方案:定義類名唯一的pagination
var picObject = new Array();//存放圖片地址的陣列
picObject.push('http://123.com/1.jpg');
if(window.mySwiper1){
window.mySwiper1.destroy;
}
window.mySwiper1 = new swiper( '.swiper-container1',{
initialSlide:picOject.length>0?picObject.length+1:0,
//initalSlide: swiper中設定初始化時的slide索引屬性,預設是0當前swiper中包含多張圖片,初始化之後顯示在最後一個,
//此時懷疑該屬性是否未生效,在onSlideChangeEnd事件,打印出swiper.activeIndex發現activeIndex排序是亂的,並且不包含0,
//在swiper中之放入一張圖片 ,loop迴圈開啟的情況下 ,檢視activeIndex ,此時輸出的activeIndex = 1,
//重新放入多張圖片,預設顯示的最後一個分頁器的activeIndex = 1, 第一張圖片的activeIndex = picObject.length+1 ,
//想要初始化的時候預設顯示第一頁,設定如上屬性
loop:true,
autoplay:1000*2, //圖片迴圈速率
autoplayDIsableOnInteraction:false,
pagination:'.swiper-pagination-pic',
paginationClickable:true,
observer:true,
observerParents:false,jiejue
resistianceRatio:0,
iOSEdgeSwipeDetection:true
})
window.mySwiper1.appendSlide(picObject);
window.mySwiper1.update();
window.mySwiper1.startAutoplay();