el-table被点击行添加背景颜色

在 Element UI 的 el-table 组件中,你可以通过使用行样式 row-style 属性来为被点击的行添加颜色。首先,你需要在数据中定义一个对象来存储被点击行的索引,然后在 row-style 函数中根据这个索引来返回不同的样式。

以下是一个示例:

复制代码
<template>
  <el-table
    :data="tableData"
    @row-click="handleRowClick"
    :row-style="rowStyle">
    <el-table-column
      v-for="(item, index) in tableColumns"
      :key="index"
      :prop="item.prop"
      :label="item.label"
      :width="item.width">
    </el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: '张三', age: 18 },
        { id: 2, name: '李四', age: 20 },
        { id: 3, name: '王五', age: 22 },
      ],
      tableColumns: [
        { prop: 'id', label: 'ID', width: 180 },
        { prop: 'name', label: '姓名', width: 180 },
        { prop: 'age', label: '年龄', width: 180 },
      ],
      activeRowIndex: null, // 存储被点击行的索引
    };
  },
  methods: {
    handleRowClick(row, event, column) {
      this.activeRowIndex = row.id; // 假设每行都有一个唯一的 id
    },
    rowStyle({ row, rowIndex }) {
      if (this.activeRowIndex === row.id) {
        return { backgroundColor: '#f0f9eb' }; // 返回被点击行的样式
      }
      return {}; // 返回其他行的默认样式
    },
  },
};
</script>

在这个示例中,我们定义了一个 activeRowIndex 数据属性来存储被点击行的 id。当行被点击时,handleRowClick 方法会被调用,并将被点击行的 id 存储在 activeRowIndex 中。row-style 函数会为每一行返回一个样式对象,如果当前行的 idactiveRowIndex 匹配,那么这行就会应用背景色 #f0f9eb,否则返回一个空对象,表示不应用任何特殊样式。

请注意,这个示例假设每行数据都有一个唯一的 id 属性。如果你的数据没有 id,你可以使用其他唯一标识符,或者直接使用 rowIndex。但是,如果数据会动态变化(例如排序或过滤),使用 rowIndex 可能会导致问题,因为它不会随着数据的改变而更新。

相关推荐
会跑的葫芦怪2 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9222 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233223 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88214 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1364 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
2601_949833395 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
军军君016 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
xiaoqi9227 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
qq_177767377 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
2603_949462107 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter