我有一个用Ajax创建的数据表。但是,我不希望显示所有字段,因此我在不太重要的字段上将bVisible设置为false。
$(document).ready(function() {
$('#example').dataTable( {
"bProcessing": true,
"sAjaxSource": "../DataQueries/FetchAllSubjectsForBrowse.asp",
"aoColumns": [
/* Subject Name */ null,
/* Address */ null,
/* LinkedWithCompany */ { "bVisible": false},
/* Work Tel */ null
]
} );
但是,我希望能够点击一行来检索所有值,包括隐藏的值。所以我尝试了下面的内容:
$('#example tbody tr').live('click', function () {
var sTitle;
var nTds = $('td', this);
var sSubjectName = $(nTds[0]).text();
var sSubjectAddress = $(nTds[1]).text();
var sLinkedWithCompany = $(nTds[2]).text();
var sWorkTel = $(nTds[3]).text();
});
但是,当我检索sLinkedWithCompany的值时,它会给我sWorkTel的值。
我对如何检索这个隐藏值感到有些困惑。
由于
答案 0 :(得分:6)
以下是点击时获取行数据的示例。
假设您有删除或任何包含表格每行的按钮,如果您点击该按钮,请获取所选行的数据并执行所需的操作。
$(document).ready(function(){
$('#example tbody').on('click', '.delete', function(){
var row = $(this).closest('tr');
var data = $('#example').dataTable().fnGetData(row);
console.log(data);
});
});
答案 1 :(得分:2)
在Datatables v1.10.x上我使用过这种方法:
列定义:
"columnDefs": [
{ "data": "yourColumnId", "targets": 0, "visible": false
]
然后在我的功能中......
var rows = $("#tbl").dataTable().fnGetNodes();
for (var i = 0; i < rows.length; i++) {
id = $("#tbl").dataTable().fnGetData(i).yourColumnId;
}
我更喜欢这种方法而不是:
id = $(rows[i]).find("td:eq(0)").html();
答案 2 :(得分:1)
使用以下代码获取当前tr数据(也完美地返回隐藏列值):
$('#example-table-id').dataTable().fnGetData($('currenttr'));
它返回一个数组,您可以访问td值,如:
$('#example-table-id').on('click', 'tbody tr', function(){
var arr=$('#example-table-id').dataTable().fnGetData($(this));
var Id=arr[0]; //returns first td value
var Name=arr[1];//returns second td value
}
答案 3 :(得分:0)
我会推荐这样的东西:
var data = [];
$.ajax({url:"../DataQueries/FetchAllSubjectsForBrowse.asp",success:function(result){
data=result;
}});
var i=0;
data.forEach(function(d) {d.index=i++;});
$('#example').dataTable( {
"bProcessing": true,
"aaData":data,
"aoColumns": [
/*index*/
/* Subject Name */ null,
/* Address */ null,
/* LinkedWithCompany */ { "bVisible": false},
/* Work Tel */ null
]
} );
然后在您的点击处理程序中获取索引,然后访问原始数据数组中的记录
$('#example tbody tr').live('click', function () {
var sTitle;
var nTds = $('td', this);
var index = $(nTds[0]).text();
var record = data[i];
});
这只是一个起点,但我希望你明白这个想法。