详解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中绑定事件的命名空间详解
Apr 05 Javascript
javascript开发技术大全 第4章 直接量与字符集
Jul 03 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
深入理解JavaScript中的传值与传引用
Dec 09 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
JavaScript实现的购物车效果可以运用在好多地方
May 09 Javascript
jQuery中 delegate使用的问题
Jul 03 Javascript
Vue表单实例代码
Sep 05 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
Nov 02 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 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查询操作实现投票功能
2016/05/09 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python之re操作方法(详解)
2017/06/14 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
如何基于Python创建目录文件夹
2019/12/31 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
大学生饮食配送创业计划书
2014/01/04 职场文书
赡养老人协议书范本
2015/08/06 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers