为了账号安全,请及时绑定邮箱和手机立即绑定

过滤后,rowData 保留在第一条记录上

过滤后,rowData 保留在第一条记录上

素胚勾勒不出你 2021-08-20 17:55:27
使用数据表的过滤器框时,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选项。这样你就不需要浪费性能来破坏/重新创建你的表,这将使你的代码更干净、更安全。


查看完整回答
反对 回复 2021-08-20
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信