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 = this
new 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;
},