我可以通过以下简单方法访问数据行:
$('#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 );
});
任何帮助表示赞赏
答案 0 :(得分:4)
您可以通过替换
来解决您的问题 aData = received_table.fnGetData($(this).parents('tr'));
与
aData = received_table.fnGetData($(this).parents('tr')[0]);
调用received_table.fnGetPosition()
答案 1 :(得分:1)
下面的代码将有所帮助,
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
});
答案 2 :(得分:0)
您可能需要使用最接近的parents()可能会提供超过一行。最接近第一个匹配DOM层次结构。
aData = recieved_table.fnGetData($(this).closest('tr')); // fails
答案 3 :(得分:0)
aData = recieved_table.fnGetData($(this).parent('tr'));
请尝试.parent()
而不是.parents()
,因为.parents()
获取当前匹配元素集中每个元素的父级。 .parent()
只有在tr是tr的直接子节点时才有效。在这种情况下,.closest()
将是理想的,如下所示。
aData = recieved_table.fnGetData($(this).closest('tr'));
如果上述方法无法解决问题,请尝试filter方法来减少匹配元素的设置。
答案 4 :(得分:0)
@Stephen Brown,如果你找到了如何获得价值的话,请你提供解决方案。我有完全相同的问题。我已经尝试过这篇文章的所有方法,但没有运气。我有以下代码。
"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
我尝试了$(tr),tr和许多其他方法,但它总是抛出错误 TypeError:a.nodeName未定义 ... ta [d]!== m?c.aoData [d] ._ aData:null} return Y(c)}; this.fnGetNodes = function(a){var b ...
非常感谢任何帮助
修改强>
得到它的工作方式(不知道我之前做错了什么)
"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']);
}
}