You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DOM表格对象获取DataTable实例并绑定draw事件?

如何从DOM表格对象获取DataTable实例并绑定draw事件

你可以通过DataTables提供的API从已初始化的表格DOM对象获取实例,以下是正确的实现方式,以及你之前代码的问题说明:

正确获取DataTable实例的方法

DataTables提供了两种可靠的方式获取已存在的实例:

方法1:使用$.fn.dataTable.fnGetInstance()

这个方法可以直接通过表格的DOM元素或选择器获取已初始化的实例:

// 通过DOM元素获取
var tableEl = document.getElementById('myTable');
var dtInstance = $.fn.dataTable.fnGetInstance(tableEl);

// 或者通过jQuery选择器获取
var dtInstance = $.fn.dataTable.fnGetInstance('#myTable');

// 确认实例存在后绑定draw事件
if (dtInstance) {
  dtInstance.on('draw', function() {
    console.log('Redraw occurred at: ' + new Date().getTime());
  });
}

方法2:使用$(selector).DataTable()(大写D)

注意这里是大写D的DataTable()方法,它会返回已有的实例,而不会重新初始化表格(如果表格已经被初始化过):

var dtInstance = $('#myTable').DataTable();

dtInstance.on('draw', function() {
  console.log('Redraw occurred at: ' + new Date().getTime());
});

你之前代码无效的原因

  1. 实例获取方式错误:直接访问DOM元素的dataTable属性不是DataTables暴露实例的标准方式,新版本中该属性可能不存在或指向非实例对象。
  2. 事件绑定方式错误:DataTables触发的draw事件带有.dt命名空间,你直接绑定draw事件无法捕获到DataTables的触发动作。如果不想通过实例绑定,也可以直接用jQuery绑定带命名空间的事件:
$('#myTable').on('draw.dt', function() {
  console.log('Redraw occurred at: ' + new Date().getTime());
});

内容的提问来源于stack exchange,提问作者Viscountess of the Junkyard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:32:41