swiper动态渲染部分功能失效

swiper-slide功能失效:
在开发移动端页面时,经常用到swiper插件。swiper-slide的数据基本都是通过动态渲染出来的,但是这时候就会有问题,会发现左右切换按钮和滑动切换都会失效。
这个是因为ajax请求数据是个异步操作,当页面渲染完毕时,swiper插件没法获取最新的swiper-slide个数,就导致了部分功能失效。查看官方文档找到解决方法:
在swiper初始化的时候设置下面的属性
observer: true, //修改swiper自己或子元素时,自动初始化swiper
observeParents: true //修改swiper的父元素时,自动初始化swiper
例如:

var mySwiper = new Swiper('.swiper-container1', {
    observer: true, //修改swiper自己或子元素时,自动初始化swiper
    observeParents: true, //修改swiper的父元素时,自动初始化swiper
    loop: true, // 循环模式选项
    // 如果需要前进后退按钮
    navigation: {
      nextEl: '.swiper-button-next',
      prevEl: '.swiper-button-prev',
    }
  })

还有一个问题是我近期做开发时候遇到的,那就是初始化swiper时,设置loop:true,经数据渲染之后,无法循环执行。
解决方法:
在ajax的成功回调函数里面初始化swiper,为了以防万一,我是在数据请求之后,写了一个定时器去执行swiper

setTimeout(function() {
   mySwiperFun()
 }, 50)

这样问题就可以解决了

你可能感兴趣的