vue-seamless-scroll 的click不触发问题

项目里有一个无缝滚动的列表效果 , 用的vue-seamless-scroll 插件 , 可以实现列表滚动没问题 , 但因为列表每一条都有click事件 , 最近发现总是有一条点不动 , 审查元素发现是


当第一个ul中的数据滚动完时,第二个ul 里的li的click事件不起作用

解决方法


这是之前的写法(可以循环显示,点击第一个ul里的li可以触发click事件,但是点击第二个ul里的li不能触发click事件) , 关于vue-seamless-scroll的一些配置可以看我另一篇文章 , 这里就不详细写了

vue-seamless-scroll实现数据无缝滚动 , 轮播效果_调调啊的博客-CSDN博客

<div>
   <vue-seamless-scroll :data="list" :class-option="option">
        <ul>
           <li v-for="(item,index) in list" :key="index" @click="goDetail(item)">
              <span>{{ item.title }}</span>
           </li>
        </ul>
   </vue-seamless-scroll>
</div>

下面是更改后的代码

  1. 给外层div加点击事件,通过event.target获取到点击的dom元素
  2. 给点击的列的元素绑定属性,这里我绑定了自定义属性data-obj对象,直接把该列的item添加进去,用JSON.stringify转成字符串
<div @click="goDetail($event)">
   <vue-seamless-scroll :data="list" :class-option="option" >
        <ul>
           <li v-for="(item, index) in list" :key="index" >
              <span :data-obj="JSON.stringify(item)">{{ item.title }}</span>
           </li>
        </ul>
   </vue-seamless-scroll>
</div>





goDetail(e) {

       //打印出来的e.target就是点击的span元素
        console.log(e.target);

        //拿到span元素身上的自定义属性obj , obj本身是字符串, JSON.parse转成对象
        let item = JSON.parse(e.target.dataset.obj);
        console.log(item);

        //路由跳转 , 把该条item对象传过去
        this.$router.push({
          name: 'listDeatil',
          params: {
            item: item
          }
        })
      },

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值