在使用vue-seamless-scroll時候茸时,想要點擊某一列/行觸發(fā)一個事件贡定,發(fā)現(xiàn),前幾個可以屹蚊,后面幾個就不行了厕氨,不能點擊的原因是因為html元素是復(fù)制出來的(滾動組件是將后面的復(fù)制出來一份,進行填鋪頁面汹粤,方便滾動)
解決方案:往滾動組件的父節(jié)點上添加綁定事件(js冒泡機制)命斧,通過e.target定位到具體點擊位置,然后判斷點擊位置是否是你滾動組件的一列/行
<div class="lm-container-right-block" @click="itemClick"> // 點擊事件綁定到父節(jié)點上
<vue-seamless-scroll :data="list" class="seamless-warp">
<ul class="seamless-warp-items"> // 設(shè)置樣式嘱兼,方便定位
<li
v-for="(item, index) in list"
:key="item.id"
class="seamless-warp-item"
:data-index="index" // 綁定index(或者直接放數(shù)據(jù),JSON.stringify(item))
>
<take-capture />
</li>
</ul>
</vue-seamless-scroll>
</div>
itemClick(e) {
const item = e.target.closest(".seamless-warp-item"); // 定位元素
if (item) { // 是否是滾動組件的某一行/列
const { index } = item.dataset;
this.info = this.list[index]; // 你想獲取的數(shù)據(jù)
// 后續(xù)操作
}
}