1. 程式人生 > >同一頁面多個swiper出現錯亂問題

同一頁面多個swiper出現錯亂問題

第一次使用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();