详解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 相关文章推荐
用js实现计算加载页面所用的时间
Apr 02 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
Sep 20 Javascript
javascript实现禁止右键和F12查看源代码
Dec 26 Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 Javascript
jQuery给元素添加样式的方法详解
Dec 30 Javascript
全面接触神奇的Bootstrap导航条实战篇
Aug 01 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 Javascript
关于javascript sort()排序你可能忽略的一点理解
Jul 18 Javascript
基于JavaScript实现无限加载瀑布流
Jul 21 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
Jul 24 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 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 Undefined index报错的修复方法
2011/07/17 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
js使用递归解析xml
2014/12/12 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
python中xrange和range的区别
2014/05/13 Python
Python三级菜单的实例
2017/09/13 Python
对numpy中轴与维度的理解
2018/04/18 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
美国在线珠宝商店:SZUL
2017/02/11 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
百度JavaScript笔试题
2015/01/15 面试题
2015年秋季学校开学标语
2015/07/16 职场文书
小学感恩主题班会
2015/08/12 职场文书
关于环保的广播稿
2015/12/17 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python