VUE Swiper设置loop模式,第二轮首图click失效

工作中遇到,记录一下。

Vue项目中使用了swiper插件放轮播图。

每张图片链接到一个外部网站。

测试同学测到每次第二轮轮播时,第一张图片的click事件无效,

点击后无法跳转到外部链接。

查了一圈,没看到完整的解决方案。

好像是swiper插件的bug。

自己试出来的解决思路是:

  1. 将需要跳转的url值加在slider的id属性上;
  2. 用swiper对象自带的on监听去触发点击事件;
  3. 点击事件里获取对象url进行跳转;

具体实现如下:

1.给图片div增加id属性,值为需要跳转的url。设置value属性不可用。

<div class="swiper-container">
    <div class="swiper-wrapper">
        <div
            v-for="(item, k) in banners"
            class="swiper-slide"
            :id="item.URL"
        >
            <img :src="item. IMAGE" />
        </div>
    </div>
</div>

2.不要在slide的div中设置vue的click事件,而是在new swiper对象时设置点击事件的监听。

setBanner() {
// swiper对象的事件监听this指向swiper,调用vue中其他方法需要用箭头函数或者把this赋值到变量上
    var that = this
    his.$nextTick(() => {
        const swiper = new Swiper('.swiper-container', {
            loop: true, 
            keyboardControl: false,
            autoplay: {
              disableOnInteraction: false,
              delay: 3000,
            },
            on:{
              click:function(sw){
                that.toNewPage(sw.target.id)
              }
            }
          })
      })
    },

3.跳转

toNewPage(url) {
    window.open(url, '_blank')
},

以上。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值