详解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操作数据库的实例代码
Oct 17 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
jQuery validate 验证radio实例
Mar 01 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
详解vue+webpack+express中间件接口使用
Jul 17 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
VUE基于NUXT的SSR 服务端渲染
Nov 30 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
Mar 02 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
详解基于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下过滤HTML代码的函数
2007/12/10 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python中的引用和拷贝浅析
2014/11/22 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
Python3标准库总结
2019/02/19 Python
Python运行异常管理解决方案
2020/03/09 Python
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
电大毕业个人生自我鉴定
2014/03/26 职场文书
中学教师师德承诺书
2014/05/23 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
教师工作决心书
2015/02/04 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
正则表达式拆分url实例代码
2022/02/24 Java/Android
Linux安装Docker详细教程
2022/07/07 Servers