详解element-ui表格中勾选checkbox,高亮当前行


Posted in Javascript onSeptember 02, 2019

我们在做后台管理系统的时候经常需要操作表格,这里我们要实现的一个功能就是,勾选复选框,高亮显示当前行,也就是当前行样式改变。这是一个非常常见的使用场景,官网给我们提供了一个带Checkbox的table表格,但是并没有给出上述使用案例,解决办法有很多,我简单总结下我自己的实现过程,希望能帮助到有同样需求的小伙伴。

详解element-ui表格中勾选checkbox,高亮当前行

勾选表格中当前项时会触发selection-change事件,在<el-table>中绑定handleSelectionChange方法。

<el-table
     @selection-change="handleSelectionChange"
    >

编写handleSelectionChange方法,实现思路就是根据勾选当前行的下标,改变当前样式。但是element table表格中没有获取勾选后当前行index的方法,这里主要通过两个forEach遍历实现。

在data中定义tableData的时候一定要设置id属性,因为这里我们是通过id的对比来获取当前行的下标。

tableData: [{
     id:0,
     date: '2016-05-03',
     name: '王小虎',
     address: '上海市普陀区金沙江路 1518 弄'
    }

下列方法打印出来的i就是你要获取的勾选行的索引值,我们在data中定义一个空数组,专门用来存储选中项的下标,方便使用。

handleSelectionChange(val) {
    var arr = [];
    val.forEach((val, index) => {


this.tableData.forEach((v, i) => {



 // id 是每一行的数据id
      if(val.id == v.id){
       // console.log(i);
       arr.push(i)
      }
     })
    })  
    this.multipleSelection = arr;
   }

获取到下标之后就需要改变样式,给<el-table>标签绑定修改当前行样式的方法rowStyle

<el-table
     @selection-change="handleSelectionChange"
     :row-class-name="rowStyle"
    >

编写rowStyle方法,思路是循环便利multipleSelection数组,取出存储的下标,与当前行下标做对比,如果相同则返回rowStyle,改变当前行的样式。

这里需要注意一个问题:

forEach中return无效!我们希望达到某一条件时,跳出循环,代码终止,使用forEach进行遍历是无法实现的。

原因:forEach()无法在所有元素都传递给调用的函数之前终止遍历!

this.multipleSelection.forEach((v)=>{
     if(rowIndex === v){
      return 'rowStyle'
     }
    })

解决方法:使用for替换forEach

rowStyle({row, rowIndex}){
    let arr = this.multipleSelection;
    for(let i = 0; i < arr.length; i++){
     if(rowIndex === arr[i]){
      return 'rowStyle'
     }
    } 
   }

在style中定义选中行的样式

</style>
 .rowStyle{
  background-color:red!important;
 }
</style>

另外如果想更改鼠标移入的hover样式,要注意需要在td上修改,因为事件是添加在td身上的,在tr上修改无效。

.el-table{
   width: 1163px; 
   margin: 0 auto;
   .el-table__body{
    tr:hover>td{
     background-color:rgba(238,250,249,1)!important;
    }
   }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
经常用的图片在容器中的水平垂直居中实例
Jun 10 Javascript
利用JS重写Cognos右键菜单的实现代码
Apr 11 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
Jan 11 Javascript
Javascript中判断变量是数组还是对象(array还是object)
Aug 14 Javascript
javascript操作excel生成报表示例
May 08 Javascript
使用jspdf生成pdf报表
Jul 03 Javascript
Javascript中apply、call、bind的巧妙使用
Aug 18 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
微信小程序实现动态获取元素宽高的方法分析
Dec 10 Javascript
JS使用H5实现图片预览功能
Sep 30 Javascript
用VsCode编辑TypeScript的实现方法
May 07 Javascript
详细分析vue表单数据的绑定
Jul 20 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 #Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
Sep 02 #Javascript
Vue内部渲染视图的方法
Sep 02 #Javascript
一步一步实现Vue的响应式(对象观测)
Sep 02 #Javascript
Layui多选只有最后一个值的解决方法
Sep 02 #Javascript
解决layui checkbox 提交多个值的问题
Sep 02 #Javascript
LayUI动态设置checkbox不显示的解决方法
Sep 02 #Javascript
You might like
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
取得传值的函数
2006/10/27 Javascript
javascript Keycode对照表
2009/10/24 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
Python的动态重新封装的教程
2015/04/11 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
python 代码运行时间获取方式详解
2020/09/18 Python
网站域名和主机:Domain.com
2019/04/01 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
送货司机岗位职责
2013/12/11 职场文书
社会保险接收函
2014/01/12 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
竞聘自述材料
2014/08/25 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
SQL Server连接查询的实用教程
2021/04/07 SQL Server
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript