el-table span-method合并行后hover样式异常问题解决方案

思路:为表格数据行新增字段myRowIndex,合并在一起的行myRowIndex值相同,添加方法监测鼠标所在行的myRowIndex值,动态将所有myRowIndex值为此值的行设置相同背景色。

一、为合并行设置相同的myRowIndex

将合并在一起的行(row)添加相同的myRowIndex,为后续根据myRowIndex动态设置类名做准备。
此步骤可以在合并行的时候设置,由于合并行的业务代码不易理解,所以就不贴代码了。

二、获取当前鼠标所在行的index

  1. el-table有监测鼠标移入/移除单元格的事件,添加这两个事件
    在这里插入图片描述

    <el-table
    	//...... 省略其他代码
        @cell-mouse-enter="handleCellMouseEnter"
        @cell-mouse-leave="handleCellMouseLeave"
    >
    </el-table>
    
  2. 将鼠标所在行的的myRowIndex保存到动态响应变量currentIndex

    handleMouseEnter(row, column, cell, event) {
      this.currentIndex= row.myRowIndex
    },
    handleMouseLeave() {
      this.currentIndex= -1
    }
    

三、 设置鼠标所在行的样式

  1. 为el-table添加row-class-name
    <el-table
    	//...... 省略其他代码
    	:row-class-name="rowClassName" 
     	@cell-mouse-enter="handleCellMouseEnter"
    	@cell-mouse-leave="handleCellMouseLeave"
    >
    </el-table>
    
  2. 动态设置鼠标所在行的类名
    tableRowClassName({ row }) {
      return row.myIndex === this.cellIndex ? 'my-hover-row' : ''
    }
    

你可能感兴趣的:(vue,element-ui,elementui,vue.js,javascript,vue)