详解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 相关文章推荐
jquery 学习之一 对象访问
Nov 23 Javascript
jQuery实现公告文字左右滚动的实例代码
Oct 29 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 Javascript
javascript自动给文本url地址增加链接的方法分享
Jan 20 Javascript
微信小程序手势操作之单触摸点与多触摸点
Mar 10 Javascript
jquery动态赋值id与动态取id方法示例
Aug 21 jQuery
js 发布订阅模式的实例讲解
Sep 10 Javascript
详解vue-router 路由元信息
Sep 13 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
使用Sonarqube扫描Javascript代码的示例
Dec 26 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
微信小程序登陆注册功能的实现代码
Dec 10 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中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
node中的session的具体使用
2018/09/14 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Django实现快速分页的方法实例
2017/10/22 Python
使用python实现ANN
2017/12/20 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
python实现dijkstra最短路由算法
2019/01/17 Python
Python转换时间的图文方法
2019/07/01 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
python3中编码获取网页的实例方法
2020/11/16 Python
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
教室标语大全
2014/06/21 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
工作失职检讨书
2015/01/26 职场文书
初中家长意见
2015/06/03 职场文书
公司行政管理制度范本
2015/08/05 职场文书
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python