如何获取DataTables中选中行的数据值
解决方案
你可以利用 DataTables 内置的 API 直接获取选中行的原始数据对象,无需手动遍历 DOM 元素提取值。以下是两种可行的实现方式:
方式一:直接通过 DataTables 选中行 API 获取数据(推荐)
修改你的「Set Status」按钮的 action 函数:
action: function(e, dt, node, config) { // 获取 DataTable 实例 var table = $('#sims').DataTable(); // 获取所有选中行的数据,转为数组 var selectedRowsData = table.rows({ selected: true }).data().toArray(); // 遍历选中数据,提取所需字段 selectedRowsData.forEach(function(row) { const simsPid = row.simsPid; const iccid = row.iccid; const imei = row.imei; // 这里可以对获取到的值进行后续操作,比如收集到数组中或发送请求 console.log("选中行数据:", simsPid, iccid, imei); }); }
方式二:基于你现有代码的改造
如果你想保留当前获取行元素的逻辑,可以通过 row().data() 方法从行元素中提取数据:
action: function(e, dt, node, config) { var client_table = $('#sims').DataTable(); var rows = $(client_table.$('input[type="checkbox"]').map(function() { return $(this).prop("checked") ? $(this).closest('tr') : null; })); $.each(rows, function(index, rowElement) { // 从行元素中获取对应的数据对象 const rowData = client_table.row(rowElement).data(); // 提取所需字段 const simsPid = rowData.simsPid; const iccid = rowData.iccid; const imei = rowData.imei; // 后续操作 console.log(simsPid, iccid, imei); }); }
说明
- DataTables 会将每行的原始数据存储在内部,即使列设置为
visible: false(比如你的simsPid列),也能通过row().data()完整获取。 - 第一种方式更简洁高效,利用了 DataTables 内置的选中状态管理,避免了手动操作 DOM 的冗余代码。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

