详解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 相关文章推荐
Firefox div高度自适应
Apr 28 Javascript
JavaScript 原型继承
Dec 26 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
jquery对dom的操作常用方法整理
Jun 25 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
Javascript实现div层渐隐效果的方法
May 30 Javascript
jQuery如何获取动态添加的元素
Jun 24 Javascript
基于JavaScript实现点击页面任何位置返回
Aug 31 Javascript
JS+DIV实现的卷帘效果示例
Mar 22 Javascript
requirejs按需加载angularjs文件实例
Jun 08 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 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插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php微信支付之APP支付方法
2015/03/04 PHP
php错误日志简单配置方法
2016/07/11 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
python统计文本文件内单词数量的方法
2015/05/30 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
公司年会搞笑主持词
2014/03/24 职场文书
公司捐款倡议书
2014/05/14 职场文书
读书月活动方案
2014/05/22 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
人民的好儿女观后感
2015/06/18 职场文书
消防演习感想
2015/08/10 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server