基于参数获取DataTable选中/未选中行的示例代码请求
嘿,我来帮你搞定这个需求!你已经完成了选中行存储到隐藏字段的部分,现在要实现根据参数获取选中或未选中行的功能,其实DataTables的Select插件本身就提供了很顺手的API,下面给你几个实用的示例代码,直接就能用:
实现根据参数获取DataTables选中/未选中行的示例代码
先补全你的表格初始化代码(方便后续调用)
首先把你的初始化代码补全成可运行的完整版本,确保表格实例能被后续函数访问到:
$(document).ready(function () { // 把table变量提升到外部作用域,方便后续函数调用 window.contactTable = $('#contactDataTable').DataTable({ columnDefs: [ // 示例:假设第一列是复选框列,禁止排序和搜索 { targets: 0, orderable: false, searchable: false } ], select: { style: 'multi', // 多选模式,根据你的实际需求调整(single/multi) selector: 'td:first-child' // 指定点击第一列触发选中 } }); // 你已有的「选中行存到隐藏字段」的逻辑 contactTable.on('select deselect', function () { var selectedRows = contactTable.rows({ selected: true }).data().toArray(); $('#hiddenSelectedRows').val(JSON.stringify(selectedRows)); }); });
通用获取选中/未选中行的函数
写一个通用函数,传入isSelected参数(true=获取选中行,false=获取未选中行),就能直接拿到对应的数据数组:
function getTableRows(isSelected) { // 使用Select插件的rows过滤方法,精准筛选目标行 return contactTable.rows({ selected: isSelected }).data().toArray(); }
调用场景示例
1. 点击按钮获取选中行
比如你有个按钮需要获取所有选中行,可以这样调用:
$('#btnGetSelected').click(function () { var selectedRows = getTableRows(true); console.log('当前选中行数据:', selectedRows); // 这里也可以重新更新隐藏字段,或者做其他业务处理 });
2. 获取未选中行并存到隐藏字段
如果需要把未选中行也存到另一个隐藏字段,直接调用函数并赋值即可:
function saveUnselectedRows() { var unselectedRows = getTableRows(false); $('#hiddenUnselectedRows').val(JSON.stringify(unselectedRows)); } // 比如在表单提交前调用,把未选中行也传给后端 $('#submitForm').submit(function () { saveUnselectedRows(); return true; });
小提示
- 确保
contactTable实例能被你的函数访问到,我这里把它挂载到window对象上,你也可以根据自己的代码结构调整作用域; .rows({ selected: ... })是Select插件专门提供的过滤API,性能比自己遍历表格高很多;- 如果需要获取行的DOM元素而不是数据,把
.data().toArray()换成.nodes().toArray()即可。
内容的提问来源于stack exchange,提问作者user3068888
相关产品推荐
相关产品推荐

