我需要从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);
答案 0 :(得分:5)
找到了一个如何做到这一点的技巧。
不要隐藏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);
是的,我知道这不是很优雅,但它确实有效。 Try it here