element-ui 表格合并之后鼠标hover效果

2023-10-26

element-ui 表格合并之后鼠标hover效果
这次主要介绍行合并后的hover效果处理,由于element-ui合并行之后,鼠标经过时,默认只会高亮第一行,如下图:

image.png

但实际我们想要的是,在鼠标经过这一合并行时,被合并的行都是高亮状态,而不是只有第一行单元格高亮

image.png

通过查看表格组件的属性发现,el-ui并没有提供可以直接这样实现的方法,但是我们发现,有一个属性row-class-name,可以实现这种效果。

具体实现思路如下:

给每条数据加一个order,从1开始递增,且将满足合并行条件的数据的order设置为一样的

鼠标进入事件判断鼠标进入哪一个单元格,遍历数据,将和该行的order相等的数据中的order以this.cellIndex变量保存起来

在rowClassName方法中,遍历数据,将每一行row的order和上一步保存的order做对比,相等的情况下,给该行设置类名hover-row

鼠标移开事件重置this.cellIndex

以下是实现代码

<template>
    <el-table
      :data="tableData"
      style="width: 100%"
      :span-method="objectSpanMethod" // 表格合并
      :row-class-name="rowClassName" // 动态给行添加样式
      @cell-mouse-enter="handleMouseEnter" // 单元格移入事件
      @cell-mouse-leave="handleMouseLeave" // 单元格移出事件
        >
      <el-table-column
        type="selection"
        reserve-selection
        width="55">
      </el-table-column>
        ....
    </el-table>
</template>
<script>
export default {
    data() {
        return {
            tableData: [{
              id: '12987122',
              name: '王小虎',
              amount1: '234',
              amount2: '3.2',
              amount3: 10
            }, ...],
            cellIndex: -1,
        }
    },
    created() {
      this.handleData();
    },
    methods: {
        // 合并行
        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
            if (columnIndex === 0) {
              if (rowIndex % 2 === 0) {
                return {
                  rowspan: 2,
                  colspan: 1
                };
              } else {
                return {
                  rowspan: 0,
                  colspan: 0
                };
              }
            }
        },
        // 处理数据, 给每一条数据加order
        handleData() {
            let order = 1;
            let data = this.tableData;
            for (let i=0; i<data.length; i++) {
                if(i === 0) {
                    data[i].order = order;
                } else {
                    if (i % 2 === 0) {
                        // 此处是给相同的数据加相同order,具体判断条件可根据自己数据进行判断
                        data[i]['order'] = data[i - 1]['order'] = data[i]['order']
                          ? data[i]['order']
                          : order;
                    } else {
                        data[i]['order'] = order + 1;
                    }
                }
            }
        },
        // 鼠标进入单元格
        handleMouseEnter(row, column, cell, event) {
          this.tableData.forEach((item) => {
            if (row.order === item.order) {
              this.cellIndex = row.order;
            }
          })
         },
         // 给相应的rowIndex添加类名
         rowClassName({ row, rowIndex }) {
          // console.log(row, rowIndex);
           let r = -1;
           this.tableData.forEach((item) => {
             if (this.cellIndex === row.order) {
               r = rowIndex;
             }
           });
           if (rowIndex === r) {
             return 'hover-row';
           }
         },
         // 鼠标离开
         handleMouseLeave(row, column, cell, event) {
          this.cellIndex = -1;
        }
     }
}
</script>

作者:彼得潘北北
链接:https://www.jianshu.com/p/6c7640bbbdbb
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element-ui 表格合并之后鼠标hover效果 的相关文章

  • 使用 Javascript/Web Audio API 访问/处理系统音频

    是否可以使用 Web Audio API 访问系统音频 以便对其进行可视化或应用均衡器 看起来可以将系统音频连接到 Web Audio API 可以访问的输入设备 即Web Audio API 获取声卡的输出 https stackover
  • Bootstrap 按钮的检查状态

    我想在 Bootstrap 3 0 2 中设置组复选框的选中状态 docs http getbootstrap com javascript buttons html div class btn group div
  • Mat select - 获取selectionChange的旧值

    我有一个项目 其中有一个包含以下内容的表单mat select选择器 每当用户更改输入时 我都会向用户显示一个对话框来确认此操作 现在 The selectionChange 通知值何时更改并将新值传递为 event 当用户取消对话框时 有
  • 考虑使用“jsdom”测试环境

    我有这个简单的测试 import React from react import render from testing library react import Button from describe Button gt it rend
  • 最小有效 JSON 是多少?

    我仔细阅读了 JSON 描述http json org http json org 但我不确定我是否知道这个简单问题的答案 最小可能的有效 JSON 字符串是什么 string 该字符串是有效的 JSON 吗 42简单的数字是有效的 JSO
  • 如何从 github 安装需要构建步骤的 npm 包,例如什么时候分叉一个库?

    假设您使用类似的库vue3 datepicker https www npmjs com package vue3 datepicker 您意识到您需要自定义某些内容 并且作为第一步 您想要使用它的自定义分支 问题是 当包被推送到 npm
  • ES6 在defineAsyncComponent 中命名导入

    我想异步加载我的网络应用程序的一些元素 这是旧的导入 import Popover PopoverButton PopoverPanel from headlessui vue export default components Popov
  • JavaScript 语法是什么:{Ci, CC}? [复制]

    这个问题在这里已经有答案了 我正在做一些 FF 附加开发 我看到这样的语法 var Cc Ci require chrome 只是好奇这个语法是什么 以及它是否对 FF 开发或其他东西有特殊意义 这称为解构赋值 它的一个特点是JavaScr
  • 如何在模态窗口中显示pdf? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个模式窗口 其中包含锚文本 当我单击此链接时 它必须调用其他位置的 pdf 并将其显示在弹出窗口中 我怎样才能做到这一点 请帮忙
  • Opera Mobile 9.7 Beta 设置焦点 [重复]

    这个问题在这里已经有答案了 我们使用手持式扫描仪将物品移入和移出库存 扫描仪运行一个 ASP 页 该页提交表单以移动项目 我们最近购买了一台运行 Windows Mobile 6 1 的新扫描仪 很快就意识到 Mobile IE 完全没用
  • xhr 响应 for 循环不起作用

    我有 xhr 和 for 循环 它的工作非常罕见 for var i 0 i lt this files length i var xhr new XMLHttpRequest xhr upload onprogress function
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 如何使用 jQuery 显示“忙”指示器?

    如何在网页中的特定点显示旋转的 忙 指示器 我想在 Ajax 请求开始 完成时启动 停止指示器 这真的只是显示 隐藏 gif 动画的问题 还是有更优雅的解决方案 您可以只显示 隐藏 gif 但您也可以将其嵌入到 ajaxSetup 中 以便
  • 防止 Firefox Web 通知自动关闭

    我已经在 Firefox 中将 Web 通知与服务器发送的 DOM 事件结合使用 不幸的是 通知在大约两到三秒后消失 我更喜欢 Chrome 的方法 即让消息保持可见 在任何给定时间最多显示三个 直到用户单击通知 这是我所拥有的 windo
  • onDeviceReady 未在 PhoneGap hello world 应用程序中触发

    我正在尝试做一个简单的警报 测试 应用程序 但事件没有被触发 这是代码 function onLoad document addEventListener deviceready onDeviceReady false Cordova is
  • 将 ngModel 绑定到自定义指令

    所以我已经在这个问题上工作了一个星期了 但我似乎无法理解整个指令的事情 我读了很多帖子 揭秘指令 http www toptal com angular js angular js demystifying directives 指令 ht
  • 如何在vuetify中设置固定工具栏?

    在 vuetify 中我使用工具栏
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • 如何在不接受焦点的元素上捕获键盘事件?

    我知道要处理输入字段中的键盘事件 您可以使用 input keyup function e var code e keyCode and 13 is the keyCode for Enter 但是 现在 我有一些div and li元素
  • 构造函数可以返回什么值来避免返回 this ?

    确切的情况是什么 returnJavascript 中的语句可以返回除this当使用构造函数调用时new关键词 Example function Foo return something var foo new Foo 如果我没记错的话 如

随机推荐

  • CARLA--车辆激光雷达安装-显示并存储数据[超详细]--[入门4]

    系列文章目录 CARLA pygame window界面大小调节两种方法 Ubuntu18 04 收藏 CRALA模拟器全网优质学习资料整合 入门 1 CARLA蓝图库可调用的车辆和地图模型名称大全 如何在carla中加入车辆群 基于tra
  • 什么是Sentinel?它能做什么

    Sentinel 是什么 随着微服务的流行 服务和服务之间的稳定性变得越来越重要 Sentinel 是面向分布式服务架构的轻量级流量控制产品 主要以流量为切入点 从流量控制 熔断降级 系统负载保护等多个维度来帮助您保护服务的稳定性 Sent
  • Linux嵌入式所有知识点-思维导图-【一口君吐血奉献】

    一 前言 很多粉丝问我 我的Linux和嵌入式当初是如何学习的 其实彭老师在最初学习的过程中 走了相当多的弯路 有些可以不学的花了太多的时间去啃 有些作为基础必须优先学习的 却忽略了 结果工作中用到这些知识时傻眼了 有些需要后面进阶阶段学习
  • opencv 识别矩形java_使用OpenCV进行矩形检测/跟踪

    HSV空间中的H通道是Hue 它对光线变化不敏感 红色范围约为 150 180 根据提到的信息 我做了以下工作 切换到HSV空间 拆分H通道 阈值并将其标准化 应用变形操作 打开 查找轮廓 按某些属性 宽度 高度 面积 比率等 进行过滤 P
  • #VCS# 常用UCLI 命令汇总

    以下 列出了常用的 UCLI 命令 均是synps 公司提供
  • 功率时延谱 matlab,改进的互功率谱时延估计算法

    前言 基于麦克风阵列的声源定位是利用麦克风阵列拾取多路声音信号 结合声源和阵列结构之间的几何关系 得到声源的位置信息 由于麦克风阵列在时域和频域的基础上增加了空域信息 因此对声音信息的处理能力明显增强 其优势主要体现于 具有空间选择性 能够
  • 病毒分析系列2

    前言 接上篇 进行病毒分析时 在进行具体的病毒行为分析前 需要或许可疑文件的基本信息 此时可以使用pe工具进行分析和获取 基本静态信息获取 一般需要获取的信息包括但不限于 程序哈希值 导入函数表 导出函数表 是否有壳 程序的位数 字符串 具
  • 数据结构--常用比较排序

    目录 一 冒泡排序 二 选择排序 三 插入排序 四 希尔排序 五 堆排序 六 快速排序 6 1 key位置选择 6 2 一趟排序的方法 hoare版本 挖坑法 前后指针法 6 3 完整排序 七 归并排序 一 冒泡排序 通过两两顺序比较 把大
  • openwrt排错实战

    1 openwrt不断重启 原因 1 没有连接外网 看门狗机制启动 解决 将外网插到WAN口即可 2 重新刷了固件后灭有授权 解决 设备联网后 访问一下这个网站 http 192 168 1 1 cgi bin auth cgi 福利 op
  • 【Chisel硬件源源语】

    Chisel硬件源源语 前言 多路选择器 优先编码器 仲裁器 队列 存储 ROM RAM 从文件向RAM写入 计数器 状态机 总结 前言 通过之前的学习 读者应当已经掌握Chisel的基本数据类型和操作符的知识 并且了解如何构建小型电路 而
  • Word如何修改目录页不显示页码, 页码从第二页开始算起

    在做毕业设计的时候或者工作过程中往往需要插入目录 但是一旦插入目录就会导致页码的第一页被目录页占用 这不是我们想要的结果 我也是网上查了好久才弄好 今天写个教程出来供大家分享 步骤一 先在目录页面的底部插入分节符 下一页 步骤二 进入可修改
  • 读取文件名,若文件名无效返回文件名并显示异常(实例)

    异常文件名 import java io FileInputStream import java io FileNotFoundException import java io IOException import java util Sc
  • VUE写后台管理(2)

    VUE写后台管理 2 1 环境 2 Element界面 3 Vue Router路由 后台 1 左导航栏 2 上面导航条 1 环境 1 下载管理node版本的工具nvm Node Version Manager 2 安装node vue工程
  • Ubuntu安装问题汇总

    1 开机提示acpi error 一般这个问题是因为显卡的原因造成的 系统没有带显卡驱动 所以会有电源管理方面的问题 解决方法 安装时在install ubuntu界面按e 在linux开头那行的末尾处加入 acpi off 然后保存进行安
  • 封装ReactBootstrap组件实现文字展开功能

    封装ReactBootstrap组件实现文字展开功能 ExpendableText js import React useRef useEffect useState from react import Container CardGrou
  • 使用anaconda配置pycharm解释器环境

    因为作业需要写python代码 需要选择一个合适的写python代码的软件 学长推荐我用anaconda的juypter来写 并且anaconda自己配置环境比较容易 所以我就下载了anaconda 但是我不喜欢网页的风格 所以下载了pyc
  • docker 通过Dockerfile安装jdk

    将自己下载好的jdk压缩包 我下载的是jdk 8u261 linux x64 tar gz 上传到服务器上 我是使用的ubuntu 将jdk 8u261 linux x64 tar gz 复制到你的docker目录下 之后创建一个Docke
  • Mac终端终止命令

    control c 结束进程 control z 结束进程
  • 【Unity】[入门tips与代码优化] 一些入门概念、技巧和优化程序的原则方法

    本文将持续间断更新 本文主要面向初级程序员 为了方便Unity开发 有些快捷键的方式和一些通用性的技巧tips等会在这篇博客内持续更新 欢迎点赞收藏 快捷键 Ctrl S 快捷保存 闲着没事就来两下 Ctrl Shift F 在hierar
  • element-ui 表格合并之后鼠标hover效果

    element ui 表格合并之后鼠标hover效果 这次主要介绍行合并后的hover效果处理 由于element ui合并行之后 鼠标经过时 默认只会高亮第一行 如下图 但实际我们想要的是 在鼠标经过这一合并行时 被合并的行都是高亮状态