【问题标题】:Cannot read property '_detailsShow' of undefined无法读取未定义的属性“_detailsS​​how”
【发布时间】:2019-02-02 00:52:19
【问题描述】:

我有一个通过 ajax 提供的 dataTable 表。而且我有一个带有详细信息控制的 td,当我销毁此数据表并再次创建它时,我的详细信息控制无法从 3 元素中工作。 它给出了这个错误:

 Uncaught TypeError: Cannot read property '_detailsShow' of undefined
at t.<anonymous> (jquery.dataTables.min.js:121)
at Function.isShown (jquery.dataTables.min.js:103)
at HTMLTableCellElement.<anonymous> (fichaFisica.js:317)
at HTMLTableElement.dispatch (jquery.min.js:3)
at HTMLTableElement.r.handle (jquery.min.js:3)

有人知道为什么吗?

【问题讨论】:

    标签: jquery datatable


    【解决方案1】:

    如果没有更多代码,我的答案将非常有限。但我认为问题在于,通过 HTML 中的更改,定义的事件监听器不再可用,因为它们引用了不再存在的元素。

    要解决这个问题,您可以使用 jQuery 的on-方法。 这样,您定义的函数将为任何动态添加/删除的元素执行,如下所示:

    $('#yourStaticDiv').on('click', 'yourSelectorOfDynamicElement', function() {
      // Actual code
    });
    

    【讨论】:

      【解决方案2】:

      $('#tbl_CpseData').find('tbody').off('click', 'tr td.details-control'); $('#tbl_CpseData').find('tbody').on('click', 'tr td.details-control', function () { var tr = $(this).closest('tr'); var row = oTable.row(tr);

                          if (row.child.isShown()) {
                              // This row is already open - close it
                              row.child.hide();
                              tr.removeClass('shown');
                          }
                          else {
                              // Open this row
                              row.child(format(row.data())).show();
                              tr.addClass('shown');
                          }
                      });
      

      【讨论】:

        猜你喜欢
        • 2016-08-03
        • 1970-01-01
        • 2020-04-06
        • 2020-10-30
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多