我需要从一个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 is undefined。
我必须通过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);