You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js如何为表格选中行动态添加isActive类

实现步骤

1. 调整响应式状态定义

把原来存储选中状态的变量改为存储当前选中行的员工ID,初始值设为null即可,Vue2选项式写法示例:

data() {
  return {
    // 保留其他原有状态
    selectedEmployeeId: null // 可直接替换原有rowSelected变量,也可新增
  }
}

如果需要支持多选,可将该变量定义为空数组。

2. 修改tr标签的类绑定逻辑

替换原来的:class绑定,判断当前遍历的员工ID是否等于选中的ID,满足条件就添加isActive类:

<tbody>
  <tr
    v-for="employee in employees"
    :key="employee.EmployeeId"
    @dblclick="rowOnDblClick(employee.EmployeeId)"
    @click="rowOnClick(employee.EmployeeId)"
    :class="{
      rowSelected: rowSelected.status, // 原有逻辑可按需保留
      isActive: selectedEmployeeId === employee.EmployeeId // 新增选中类判断
    }"
  >
    <!-- 原有td内容保持不变 -->
    <td>{{employee.EmployeeCode}}</td>
    <td>{{employee.FullName}}</td>
    <td>{{employee.GenderName}}</td>
    <td style="text-align: center;">{{employee.DateOfBirth|dateofbirth}}</td>
    <td>{{employee.PhoneNumber}}</td>
    <td :title="employee.Email">{{employee.Email}}</td>
    <td>{{employee.PositionName}}</td>
    <td>{{employee.DepartmentName}}</td>
    <td style="text-align: right;">{{employee.Salary|money}}</td>
    <td>{{employee.WorkStatus|status}}</td>
  </tr>
</tbody>

多选场景下类绑定改为isActive: selectedEmployeeId.includes(employee.EmployeeId)即可。

3. 修改点击行的事件处理逻辑

在rowOnClick方法里更新选中的ID,如果需要支持点击已选中行取消选中,可额外加判断:

methods: {
  rowOnClick(employeeId) {
    // 单选支持取消选中的写法
    this.selectedEmployeeId = this.selectedEmployeeId === employeeId ? null : employeeId
    // 不需要取消直接赋值即可:this.selectedEmployeeId = employeeId
    // 多选写法:
    // const index = this.selectedEmployeeId.indexOf(employeeId)
    // index > -1 ? this.selectedEmployeeId.splice(index, 1) : this.selectedEmployeeId.push(employeeId)
    // 原有其他业务逻辑保留
  },
  // 其他原有方法保持不变
}

内容的提问来源于stack exchange,提问作者Viet Quang Fresher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:06:03