jQuery DataTable是一个功能强大的jQuery插件,用于在HTML表格中添加高级交互功能。在表格中添加按钮是常见的需求,可以用于行操作、数据编辑、删除等场景。
columns.render
选项添加按钮$(document).ready(function() {
$('#example').DataTable({
"columns": [
{ "data": "id" },
{ "data": "name" },
{
"data": null,
"render": function(data, type, row) {
return '<button class="btn btn-primary edit-btn" data-id="'+row.id+'">编辑</button>' +
'<button class="btn btn-danger delete-btn" data-id="'+row.id+'">删除</button>';
}
}
],
"data": [
{ "id": 1, "name": "张三" },
{ "id": 2, "name": "李四" }
]
});
});
createdRow
回调添加按钮$(document).ready(function() {
$('#example').DataTable({
"createdRow": function(row, data, dataIndex) {
var $td = $(row).find('td:last');
$td.html('<button class="btn btn-info view-btn" data-id="'+data.id+'">查看</button>');
},
"columns": [
{ "data": "id" },
{ "data": "name" }
],
"data": [
{ "id": 1, "name": "王五" },
{ "id": 2, "name": "赵六" }
]
});
});
$(document).ready(function() {
$('#example').DataTable({
dom: 'Bfrtip',
buttons: [
{
text: '新增',
action: function(e, dt, node, config) {
alert('新增按钮被点击');
}
},
{
text: '导出',
action: function(e, dt, node, config) {
alert('导出按钮被点击');
}
}
]
});
});
添加按钮后,需要处理按钮的点击事件。由于DataTable是动态生成的,需要使用事件委托:
$(document).on('click', '.edit-btn', function() {
var id = $(this).data('id');
alert('编辑ID为 ' + id + ' 的记录');
});
$(document).on('click', '.delete-btn', function() {
var id = $(this).data('id');
if(confirm('确定要删除ID为 ' + id + ' 的记录吗?')) {
// 执行删除操作
}
});
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<table id="example" class="display" style="width:100%">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>操作</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.js"></script>
<script>
$(document).ready(function() {
var table = $('#example').DataTable({
"columns": [
{ "data": "id" },
{ "data": "name" },
{
"data": null,
"render": function(data, type, row) {
return '<button class="btn btn-primary btn-sm edit-btn" data-id="'+row.id+'">编辑</button> ' +
'<button class="btn btn-danger btn-sm delete-btn" data-id="'+row.id+'">删除</button>';
}
}
],
"data": [
{ "id": 1, "name": "张三" },
{ "id": 2, "name": "李四" },
{ "id": 3, "name": "王五" }
]
});
// 处理按钮点击事件
$(document).on('click', '.edit-btn', function() {
var id = $(this).data('id');
alert('编辑ID为 ' + id + ' 的记录');
});
$(document).on('click', '.delete-btn', function() {
var id = $(this).data('id');
if(confirm('确定要删除ID为 ' + id + ' 的记录吗?')) {
var row = $(this).closest('tr');
table.row(row).remove().draw();
}
});
});
</script>
</body>
</html>
以上方法可以根据实际需求选择使用,第一种方法最为灵活,第二种方法适合对整行进行操作,第三种方法适合添加表格顶部的操作按钮。