如何从JQuery DataTable中获取包含已选中复选框的行

我需要从Jquery Datatables的隐藏列中获取已选中复选框的值(在第一个可见列中)。 到目前为止我已经有了

bodytable$ = $('#dataTable').dataTable({ "bJQueryUI" : true, "bPaginate" : true, "bSort" : false, "bFilter": false, "aoColumns": [{"bVisible": false}, {"bVisible": true}, {"bVisible": true}, {"bVisible": true}], "oLanguage": { "sEmptyTable": '', "sInfoEmpty": '', "sZeroRecords": '' } }); 

我从隐藏列中获取值

  var checkIds = []; $('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){ var tr = $(this).closest('tr'); var rowData = bodytable$.fnGetData(tr); checkIds.push(rowData[0]); }); alert(checkIds); 

这行失败的行var rowData = bodytable $ .fnGetData(tr); 使用Firefox调试给出错误消息TypeError:a.nodeName未定义

我必须通过DataTable API,因为隐藏列实际上并没有出现在加载到浏览器中的html中,因为我希望能够在所选复选框不在同一页面时选择数据值。

继mainguys响应,并使用CSS隐藏列而不是bVisible属性,我现在可以得到我想要的东西;

  var checkIds = []; $('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){ var tr = $(this).closest('tr'); checkIds.push($(tr).find('td:eq(0)').text()); }); alert(checkIds); 

找到了一个如何做到这一点的技巧。

不要隐藏collumn,只需为它指定一个display:none的类。

 "aoColumns": [{ "bVisible": true }, { "bVisible": true, sClass:"hideme" }, { "bVisible": true }] 

CSS:

 .hideme { display:none; } 

现在用这个找到它们:

  var checkIds = []; bodytable$.$('tr').each(function(index,rowhtml){ var checked= $('input[type="checkbox"]:checked',rowhtml).length; if (checked==1){ checkIds.push($('.hideme',rowhtml).text()); } }); alert(checkIds); 

是的,我知道这不是很优雅,但它确实有效。 试试吧