使用数据表的过滤器框时,rowId保留在第一条记录上,我不知道为什么。这是数据表(尽可能简化):$.ajax({ url: 'process/getData.php', type: 'POST', data: data, dataType: 'html', success: function(data, textStatus, jqXHR){ var jsonObject = JSON.parse(data); var table = $('#example1').DataTable({ "data": jsonObject, "columns": [ { "data": "MONDAY", "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { $(nTd).html("<span class='checkMon'>+oData.MONDAY+</span>"); }, // columns for each work day } ], "paging": false, "scrollY": 730, "scrollX": true, "bDestroy": true, "stateSave": true, "autoWidth": true }); }, error: function(jqHHR, textStatus, errorThrown) { console.log('fail: '+ errorThrown); return false; }});在数据表之外,我有onclick事件处理程序:$('#example1').on('click', 'tr > td > .checkMon', function(e){ e.preventDefault(); var $dataTable = $('#example1').DataTable(); var tr = $(this).closest('tr'); var data = $dataTable.rows().data(); var rowData = data[tr.index()]; console.log(rowData.UID);});在过滤之前,当我单击任何单元格时,控制台会读取正确的rowData.UID.问题是当我过滤并再次单击单元格时,控制台读取第一行的rowData.UID.有谁知道为什么会发生这种情况以及如何解决它?
1 回答
Helenr
TA贡献1780条经验 获得超4个赞
如果您想要实现的只是登录到UID源包含<span>您单击的行的对象的控制台属性,则以下方法应该有效:
$('#example1').on('click', '.checkMon', function(e)
{
e.preventDefault();
const dataTable = $('#example1').DataTable();
const rowData = dataTable.row($(this).closest('tr')).data();
console.log(rowData.UID);
});
另外,请考虑使用ajax选项。这样你就不需要浪费性能来破坏/重新创建你的表,这将使你的代码更干净、更安全。
添加回答
举报
0/150
提交
取消