详解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 相关文章推荐
Javascript Tab 导航插件 (23个)
Jun 11 Javascript
Javascript中获取出错代码所在文件及行数的代码
Sep 23 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
JavaScript 垃圾回收机制分析
Oct 10 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
jQuery实现向下滑出的二级菜单效果实例
Aug 22 Javascript
Javascript数组Array方法解读
Mar 13 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
Sep 14 Javascript
使用vue制作滑动标签
Sep 21 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中的时间处理
2006/10/09 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
初品cakephp 入门基础
2012/02/16 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
js 图片轮播(5张图片)
2008/12/30 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
Vue实现手机计算器
2020/08/17 Javascript
分享一个简单的python读写文件脚本
2017/11/25 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
Java servlet面试题
2012/03/04 面试题
自荐信怎么写好
2013/11/11 职场文书
销售人员自我评价
2014/02/01 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
异地年检委托书范本
2014/09/24 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2015年安全生产责任书
2015/01/30 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL