我一直在玩datatables.net,我的表现在从json对象数组中加载数据。现在我想要做的是当有人点击一行时抓取其中一个对象的ID(只是一个属性),这样我就可以打开一个对话框。
我发现了一种kludgy机制,它使用fnRowCallback将ID作为TR元素的属性加载,但是当行被排序时会中断。
var tableData = [
{ id: 196402, name: "Joe Bloggs", age: 25, gender: "Male"},
{ id: 257820, name: "Jane Bloggs", age: 22, gender: "Female"},
{ id: 33025, name: "Sam Smith", age: 27, gender: "Female"}
];
oTable = $('#MyTable').dataTable({ "aaData": tableData,
"aoColumns":
[
{"mData": "name"},
{"mData": "age"},
{"mData": "gender"}
],
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
$(nRow).attr('id', aData.id); // this breaks if the grid is sorted!
}
});
$("#MyTable tbody tr").click( function( e ) {
alert($(this).attr('id'));
});
有更好的方法吗?
答案 0 :(得分:2)
来自:http://www.datatables.net/api
$('#example tbody td').click( function () {
// Get the position of the current data from the node
var aPos = oTable.fnGetPosition( this );
// Get the data array for this row
var aData = oTable.fnGetData( aPos[0] );
// Update the data array and return the value
aData[ aPos[1] ] = 'clicked';
this.innerHTML = 'clicked';
} );
我喜欢数据表,但是真的值得花一些时间学习它们......我还有很长的路要走TBH; - )
希望有所帮助。
d