我可以通过以下简单的方法访问数据行:
$('#received-body tr').click( function(){
aData = received_table.fnGetData(this);
selected_received_id = aData[0];
alert( selected_received_id );
});
但我不能从所谓的按钮访问他们.received-update
的行之一:
$('#received-body .received-update').click( function(){
alert( 'update' ); // works
aData = received_table.fnGetData( $(this).parents('tr')); // fails
selected_received_id = aData[0];
alert( 'update:' + selected_received_id );
});
任何帮助表示赞赏
您可以通过替换解决您的问题
aData = received_table.fnGetData($(this).parents('tr'));
同
aData = received_table.fnGetData($(this).parents('tr')[0]);
也需要此相同的语法调用received_table.fnGetPosition()
下面的代码会有所帮助,
var table = $('#tableID').DataTable();
var row_data;
$('#tableID tbody').on( 'click', 'button', function () {
row_data = table.row( $(this).parents('tr') ).data();
console.log(row_data); // you will get the row data
});
您可能需要使用最接近的父母()可能会被给予超过一个行。 虽然最近率先拿到赛了DOM层次结构。
aData = recieved_table.fnGetData($(this).closest('tr')); // fails
aData = recieved_table.fnGetData($(this).parent('tr'));
尝试.parent()
代替.parents()
因为.parents()
获取每个元素的父在当前匹配的元素。 .parent()
如果TR是TR的直接孩子才会工作。 在那种情况下.closest()
将是理想的,如下所示。
aData = recieved_table.fnGetData($(this).closest('tr'));
如果上面没有为你的工作,尽量过滤方法,以减少匹配的元素。
@Stephen布朗,请您提供解决方案,如果你找到了如何获得价值。 我有完全相同的问题。 我已经尝试在这个岗位,但没有运气的所有方式。 我有下面的代码。
"fnDrawCallback": function() {
$(".select_row ").click(function(e){
dataId = $(this).data("id");
tr=$(this).closest("tr")[0];
getSelected(tr, true);
});
}
而且功能(studentDataTable是数据表)
function getSelected(tr, tableLoaded){
console.log($(tr));
console.log(tr);
if (tableLoaded){
data = studentDataTable.fnGetPosition($(tr));
}
}
在打印的console.log以下
Object[tr.even] and <tr class="even"> respectively
任何帮助深表感谢
编辑
得到它以这种方式工作(不知道我以前做错了)
"aoColumnDefs": [ { "fnRender": function(oObj) { return '<input type="checkbox" onClick=getSelected(this); data-id="' + oObj.aData.id + '" value="' + oObj.aData.id + '" />'; }, "bSortable": false, "aTargets": [0] },
和功能
function getSelected(checkbox){ console.log($(checkbox)); if ($(checkbox).is(':checked')) { tr=$(checkbox).closest("tr")[0]; console.log(tr); data = studentDataTable.fnGetData(tr); console.log(data['groupsList']); } }