swiper轮播点击跳转,swiper的loop属性是true,当点击第一张图片和向左滑动到最后一张点击时触发不了事件
原因:因为swiper的无限轮播时会自动复制第一个和最后一个页面进行轮播。但由于只复制页面没有复制点击事件,此时我们用vue写的点击事件在页面循环一周回来遇到复制的页面时,点击事件就会失效。
解决办法:不使用vue中的@click进行操作,而是在swiper的回调函数中直接操作DOM,这样就可以很好的解决这一问题
<div class="swiper-container sw1"><div class="swiper-wrapper"><!-- --><!-- <div class="swiper-slide slide" v-for='(item,index) in com' :key='index' @click='jump(item.link,item.uuid)'> --><div class="swiper-slide slide" v-for='(item,index) in com' :key='index' :data-link='item.link' :data-uuid='item.uuid'><div class="warps"><img :src="item.logo" alt="" class="logo"></div></div></div><!-- 如果需要分页器 --><div class="swiper-pagination"></div></div>
mounted() {let that = thisnew Swiper('.swiper-container', {direction: 'horizontal', // 垂直切换选项loop:true,// 如果需要分页器pagination: {el: '.swiper-pagination',},on:{click:function(){let link = this.clickedSlide.dataset.link;let uuid = this.clickedSlide.dataset.uuid;that.jump(link,uuid)}}})},jump(link,uuid){window.location.href = link;},
