封装element的table实现表头也能绑定点击事件
时间: 2024-03-20 18:38:49 浏览: 55
我们可以封装一个函数来实现为element的table表头绑定点击事件。具体实现参考如下代码:
```javascript
function bindTableHeaderClickEvent(table, callback) {
var thElements = table.getElementsByTagName("th");
for (var i = 0; i < thElements.length; i++) {
thElements[i].addEventListener("click", function() {
var index = Array.prototype.indexOf.call(thElements, this);
callback(index);
});
}
}
```
在上面的代码中,我们定义了一个名为bindTableHeaderClickEvent的函数,该函数接受两个参数:一个是要绑定点击事件的table元素,另一个是点击表头时要执行的回调函数。在函数内部,我们首先获取了所有的表头单元格(即th元素),然后使用循环为每个单元格添加了一个click事件监听器。当用户点击表头单元格时,监听器会执行指定的处理函数,我们通过回调函数的方式来处理表头点击事件。在回调函数中,我们使用Array.prototype.indexOf方法来获取当前点击的表头单元格在所有表头单元格中的索引值,然后将该索引值作为参数传递给回调函数。
使用示例:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Table Header Click Event</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
<div id="app">
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
</el-table>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
tableData: [
{ date: '2019-09-01', name: '张三', address: '北京市' },
{ date: '2019-09-02', name: '李四', address: '上海市' },
{ date: '2019-09-03', name: '王五', address: '广州市' }
]
},
mounted: function() {
var table = this.$el.getElementsByTagName("table")[0];
bindTableHeaderClickEvent(table, function(index) {
console.log("表头" + (index + 1) + "被点击了!");
});
}
});
</script>
</body>
</html>
```
在上面的代码中,我们使用了Vue.js和Element UI来创建了一个带有表头的表格。在mounted钩子函数中,我们首先获取了表格元素,然后调用了bindTableHeaderClickEvent函数为表头单元格绑定了点击事件,并指定了一个回调函数来处理表头点击事件。在回调函数中,我们使用console.log方法输出了当前点击的表头单元格的索引值。
阅读全文