vue使用swiper绑定点击方法问题

在使用Vue和Swiper创建带循环功能的轮播图时,遇到点击事件无法在loop为true时正确触发的问题。原因在于节点被复制,绑定事件未复制。解决方案是通过设置data-href属性传递数据,并在swiper实例的click事件中处理,从而确保点击事件在所有滑块上都能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做swiper轮播图的时候遇到了一个问题,记录一下

问题描述:loop:true的情况下轮播图左滑,最后一张轮播图点击事件无法触发

问题分析:节点被复制,绑定时间不能被复制

错误示例:

        <swiper ref="mySwiper" :options="swiperOption" class='swiper_container'>
            <swiper-slide v-for(index,item) in datalist :key='index'>
                <img :src="item.imgUrl" alt @click='goDetail(index.item)'/>  // 当loop:true时,这种绑定点击事件会有问题
            </swiper-slide>
        <swiper>

解决方法:

       html部分: 

              <swiper ref="mySwiper" :options="swiperOption" class='swiper_container'>
                 <swiper-slide v-for(index,item) in datalist :key='index' :data-href='fun_str(item)'>  // data-href用来获取item数据
                     <img :src="item.imgUrl" alt/>
                 </swiper-slide>
             <swiper>

      js部分:

           data(){

               return{

                   swiperOption:{

                        loop:true

                    }

               }

            }

          computed: {
              // 获取swiper实例
              swiper(){
                 return this.$refs.mySwiper.$swiper
              },
            },
           mounted:{
              let that = this
              this.swiper.on('click',function(){
              / / 这里的this是swiper的实例
              let item = JSON.parse(this.clickedSlide.attributes["data-href"].nodeValue)
              const clickedIndex = this.realIndex;
              // 这里的that是Vue的实例
               that.goDetail(clickedIndex,item);
            })
         },
         methods: {
             // 处理item数据返回给swiper实例
             func_str(item){
                 return JSON.stringify(item);
             },
            // 点击事件
            goDetail(index,item){
             // 跳转方法
            }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值