在回调中使用 API

有时您可能希望在 DataTables 回调函数(例如 initCompleterowCallback 等)中调用 API 函数。这会带来一个复杂的问题,即对象尚未完全初始化,因此您无法将结果分配给变量,然后在回调中使用该变量。但是,DataTables 的所有回调函数都是在数据表实例的作用域中执行的,因此您可以使用 JavaScript 特殊变量 this 来访问 API(this.api() 将提供 API 实例),因为 thistable 节点。

在本例中,我们使用附加到表格中所有 td 单元格的事件处理程序来演示 API 的使用。我们获取有问题的单元格值,然后使用 search() 将该添加的搜索应用到表格中。

同样值得注意的是,在表格初始化之后,可以通过附加委托单击事件来达到相同的效果 - 但本示例展示了在回调中使用 API!

姓名 职位 办公室 年龄 开始日期 工资
Tiger Nixon System Architect Edinburgh 61 2011-04-25 $320,800
Garrett Winters Accountant Tokyo 63 2011-07-25 $170,750
Ashton Cox Junior Technical Author San Francisco 66 2009-01-12 $86,000
Cedric Kelly Senior Javascript Developer Edinburgh 22 2012-03-29 $433,060
Airi Satou Accountant Tokyo 33 2008-11-28 $162,700
Brielle Williamson Integration Specialist New York 61 2012-12-02 $372,000
Herrod Chandler Sales Assistant San Francisco 59 2012-08-06 $137,500
Rhona Davidson Integration Specialist Tokyo 55 2010-10-14 $327,900
Colleen Hurst Javascript Developer San Francisco 39 2009-09-15 $205,500
Sonya Frost Software Engineer Edinburgh 23 2008-12-13 $103,600
Jena Gaines Office Manager London 30 2008-12-19 $90,560
Quinn Flynn Support Lead Edinburgh 22 2013-03-03 $342,000
Charde Marshall Regional Director San Francisco 36 2008-10-16 $470,600
Haley Kennedy Senior Marketing Designer London 43 2012-12-18 $313,500
Tatyana Fitzpatrick Regional Director London 19 2010-03-17 $385,750
Michael Silva Marketing Designer London 66 2012-11-27 $198,500
Paul Byrd Chief Financial Officer (CFO) New York 64 2010-06-09 $725,000
Gloria Little Systems Administrator New York 59 2009-04-10 $237,500
Bradley Greer Software Engineer London 41 2012-10-13 $132,000
Dai Rios Personnel Lead Edinburgh 35 2012-09-26 $217,500
Jenette Caldwell Development Lead New York 30 2011-09-03 $345,000
Yuri Berry Chief Marketing Officer (CMO) New York 40 2009-06-25 $675,000
Caesar Vance Pre-Sales Support New York 21 2011-12-12 $106,450
Doris Wilder Sales Assistant Sydney 23 2010-09-20 $85,600
Angelica Ramos Chief Executive Officer (CEO) London 47 2009-10-09 $1,200,000
Gavin Joyce Developer Edinburgh 42 2010-12-22 $92,575
Jennifer Chang Regional Director Singapore 28 2010-11-14 $357,650
Brenden Wagner Software Engineer San Francisco 28 2011-06-07 $206,850
Fiona Green Chief Operating Officer (COO) San Francisco 48 2010-03-11 $850,000
Shou Itou Regional Marketing Tokyo 20 2011-08-14 $163,000
Michelle House Integration Specialist Sydney 37 2011-06-02 $95,400
Suki Burks Developer London 53 2009-10-22 $114,500
Prescott Bartlett 技术作者 London 27 2011-05-07 $145,000
加文·科尔特斯 团队负责人 San Francisco 22 2008-10-26 $235,500
玛特娜·麦科雷 售后支持 Edinburgh 46 2011-03-09 $324,050
尤尼蒂·巴特勒 Marketing Designer San Francisco 47 2009-12-09 $85,675
霍华德·哈特菲尔德 Office Manager San Francisco 51 2008-12-16 $164,500
希望·弗恩特斯 秘书 San Francisco 41 2010-02-12 $109,850
维维安·哈雷尔 财务主管 San Francisco 62 2009-02-14 $452,500
蒂莫西·穆尼 Office Manager London 37 2008-12-11 $136,200
杰克逊·布拉德肖 主任 New York 65 2008-09-26 $645,750
奥利维娅·梁 支持工程师 Singapore 64 2011-02-03 $234,500
布鲁诺·纳什 Software Engineer London 38 2011-05-03 $163,500
樱花·山本 支持工程师 Tokyo 37 2009-08-19 $139,575
索尔·沃尔顿 Developer New York 61 2013-08-11 $98,540
芬恩·卡马乔 支持工程师 San Francisco 47 2009-07-07 $87,500
塞奇·鲍德温 数据协调员 Singapore 64 2012-04-09 $138,575
泽奈达·弗兰克 Software Engineer New York 63 2010-01-04 $125,250
佐丽塔·塞拉诺 Software Engineer San Francisco 56 2012-06-01 $115,000
詹妮弗·阿科斯塔 初级 JavaScript 开发者 Edinburgh 43 2013-02-01 $75,650
卡拉·史蒂文斯 Sales Assistant New York 46 2011-12-06 $145,600
赫敏·巴特勒 Regional Director London 47 2011-03-21 $356,250
莱尔·格里尔 Systems Administrator London 21 2009-02-27 $103,500
乔纳斯·亚历山大 Developer San Francisco 30 2010-07-14 $86,500
沙德·德克尔 Regional Director Edinburgh 51 2008-11-13 $183,000
迈克尔·布鲁斯 Javascript Developer Singapore 29 2011-06-27 $183,000
唐娜·斯奈德 客户支持 New York 27 2011-01-25 $112,000
姓名 职位 办公室 年龄 开始日期 工资
  • JavaScript
  • HTML
  • CSS
  • Ajax
  • 服务器端脚本
  • 注释

下面显示的 JavaScript 用于初始化此示例中显示的表格

$('#example').DataTable({ initComplete: function () { var api = this.api(); api.$('td').on('click', function () { api.search(this.innerHTML).draw(); }); } });
new DataTable('#example', { initComplete: function () { let api = this.api(); api.on('click', 'tbody td', function () { api.search(this.innerHTML).draw(); }); } });

除了以上代码,还加载了以下 JavaScript 库文件以用于此示例

    下面显示的 HTML 是原始 HTML 表格元素,在 DataTables 对其进行增强之前

    此示例使用了一点额外的 CSS,超出了从库文件中加载的范围(如下所示),以便正确显示表格。下面显示了使用的附加 CSS

    以下 CSS 库文件已加载用于此示例中,以提供表格样式

      此表格通过 Ajax 加载数据。下面显示了已加载的最新数据。此数据将随着加载任何其他数据而自动更新。

      下面显示了用于为此表格执行服务器端处理的脚本。请注意,这只是一个使用 PHP 的示例脚本。可以使用任何语言编写服务器端处理脚本,使用 DataTables 文档中描述的协议

      其他示例