Vue el-table表格第一列序号与复选框hover切换方式
作者:李泽举
这篇文章主要介绍了Vue el-table表格第一列序号与复选框hover切换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
前言
项目中用vue element el-table
表格的第一列为鼠标经过时切换显示序号与复选框
不影响当前行的点击事件 , 如跳转详情等操作
老规矩,先上效果图
HTML
<el-table ref="table" :data="tableData" style="width: 100%" border stripe @cell-mouse-enter="cellEnter" @cell-mouse-leave="cellLeave" @selection-change="handleSelectionChange" @row-click="toDeatils" > <el-table-column type="selection" width="50" align="left"> <template #default="{ row, $index }"> <div v-if="columnCheckedId == row.id || checkedList[$index]" @click.stop > <el-checkbox v-model="checkedList[$index]" @change="cellCheckbox(row, $index)" ></el-checkbox> </div> <span v-else>{{ $index + 1 }}</span> </template> </el-table-column> <!-- 如有操作列 ↓--> </el-table>
JS
data() { return { columnCheckedId: '', tableData: [], //table数据 multipleSelection: [], //table多选数据 checkedList: [], //table多选选中数据 } }, methods:{ handleSelectionChange(val) { this.multipleSelection = val if (this.multipleSelection.length == this.tableData.length) { this.multipleSelection.forEach((item, index) => { this.checkedList[index] = true }) } if (this.multipleSelection.length == 0) { this.checkedList = [] } this.$emit('selectList', this.multipleSelection) }, //鼠标移入表格当前行 cellEnter(row, column, cell, event) { this.columnCheckedId = row.id }, // 鼠标移出表格当前行 cellLeave(row, column, cell, event) { this.columnCheckedId = '' }, // 选中与否塞数据 cellCheckbox(row, index) { if (this.checkedList[index]) { this.$refs.table.toggleRowSelection(row, true) } else { this.$refs.table.toggleRowSelection(row, false) } }, }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。