Element UI 的el-table点击获取当前tr

在 Element UI 的 <el-table> 组件中,如果你想要监听整个行(<tr>)的点击事件,你通常会使用 @row-click 事件。这个事件会在用户点击表格的某一行时触发,并且会传递给你三个参数:

row:当前行的数据(row)

column:当前行的 DOM 元素(rowElement,但在某些版本的 Element UI 中可能不直接提供 DOM 元素,而是提供了行的索引或其他信息,具体取决于你使用的 Element UI 版本)

event:当前点击dom元素

<template>  
  <el-table  
    :data="tableData"  
    @row-click="handleRowClick"  
    style="width: 100%">  
    <el-table-column  
      prop="date"  
      label="日期"  
      width="180">  
    </el-table-column>  
    <el-table-column  
      prop="name"  
      label="姓名"  
      width="180">  
    </el-table-column>  
    <!-- 其他列定义 -->  
  </el-table>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      tableData: [{  
        date: '2016-05-02',  
        name: '王小虎',  
        // 其他数据...  
      }, // ...更多数据  
      ]  
    }  
  },  
  methods: {
    /**
     *
     * @param row 当前row
     * @param column 当前纵队信息
     * @param event 当前点击dom
     */
    handleRowClick(row, column, event) {
     //被点击的行的索引
      const index = this.allUserData.findIndex(
        (item) => item.userId === row.userId
      );
      //点击的tr元素
      const tr = document.querySelectorAll(`.${column.id}`)[index]
        .parentElement;
      // 使用getBoundingClientRect()获取元素相对于视口的位置
      const rect = tr.getBoundingClientRect();
      const { top, left } = rect;
      this.location = {
        left,
        top,
      };
      // 注意:在某些版本的 Element UI 中,`column` 和 `event` 可能不会作为参数传递  
      // 如果你的版本中没有 `event`,你可能需要在自定义列模板中使用 `@click`  
      console.log('你点击了行:', row);  
  
      // 如果你需要鼠标位置,你可能需要这样做(但这通常不是 @row-click 的用例):  
      // 1. 在自定义列模板中使用 `@click`  
      // 2. 或者,如果你只是想知道行被点击了,上面的代码就足够了  
    }, 
  }  
}  
</script>

Element UI 的 `el-table` 中,可以通过设置 `row-height` 属性来定义每一行的高度。默认情况下,行高是由表格的内容自动撑开的。 如果需要获取行高,可以通过以下两种方式实现: 1. 通过 CSS 获取行高 在 CSS 中,可以使用 `height` 属性获取元素的高度。因此,可以通过以下代码获取 `el-table` 中所有行的高度: ``` // 获取 el-table 中所有行的高度 const rows = document.querySelectorAll('.el-table__row') const rowHeight = rows[0].getBoundingClientRect().height ``` 2. 通过 `el-table` 的 `row-class-name` 属性获取行高 `el-table` 组件提供了 `row-class-name` 属性,可以用来为每一行添加自定义的类名。我们可以通过这个属性来获取行高。 首先,需要在 `el-table` 中设置 `row-class-name` 属性,并传入一个函数,函数的参数是行数据对象,函数的返回值是一个字符串,代表这一行的类名。可以在这个函数中计算行高,并将行高保存在行数据对象中。 例如,我们可以这样实现: ``` <el-table :data="tableData" row-class-name="getRowClassName"> ... </el-table> ``` ``` methods: { getRowClassName(row) { // 计算行高并保存在行数据对象中 row.height = 50 return '' } } ``` 然后,在需要获取行高的时候,可以遍历 `el-table` 的数据源,获取每一行的高度: ``` // 遍历 el-table 的数据源,获取每一行的高度 const rows = this.tableData.map(row => row.height) ``` 注意:如果使用第二种方法,需要在行数据对象中保存行高,因为 `el-table` 组件会将行数据对象作为 `tr` 元素的 `data` 属性传递给 `render` 函数,而 `render` 函数无法直接访问 `el-table` 组件实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WebCsDn_TDCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值