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

使用数据表的过滤器框时,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.


有谁知道为什么会发生这种情况以及如何解决它?


素胚勾勒不出你
浏览 165回答 1
1回答

Helenr

如果您想要实现的只是登录到UID源包含<span>您单击的行的对象的控制台属性,则以下方法应该有效:$('#example1').on('click', '.checkMon', function(e){&nbsp; e.preventDefault();&nbsp; const dataTable = $('#example1').DataTable();&nbsp; const rowData = dataTable.row($(this).closest('tr')).data();&nbsp; console.log(rowData.UID);});另外,请考虑使用ajax选项。这样你就不需要浪费性能来破坏/重新创建你的表,这将使你的代码更干净、更安全。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript