在vue的一个ul里,用v-for循环创建li并设置事件,但是会造成所有的li的事件都会同时被触发,下图是解决办法,给mouseenter事件里showQrcode事件传入一个参数index,是v-for循环里创建的index,来触发Qrcode标签的v-show,第三方变量showQr === index 等于为true,不等于,没有不等于,你每个点击传入的index一定是当前li的index
<li
class="tabLi"
v-for="(liItem, index) in liItems"
:key="liItem.imgName"
:class="'tabLi'+index"
@mouseenter="showQrcode(index)"
@mouseleave="closeQrcode">
<el-image
class="tabLiImg"
style="height: 220px"
:src="liItem.imgSrc"
fit="fit">
</el-image>
<QrCode v-show="showQr === index"></QrCode>
<p class="tabLiP">{{ liItem.imgName }}</p>
</li>
data() {
return {
showQr: null
}
},
methods: {
showQrcode(index) {
this.showQr = index;
}
}