在回调中使用 API
有时您可能希望在 DataTables 回调函数(例如 initComplete、rowCallback 等)中调用 API 函数。这会带来一个复杂的问题,即对象尚未完全初始化,因此您无法将结果分配给变量,然后在回调中使用该变量。但是,DataTables 的所有回调函数都是在数据表实例的作用域中执行的,因此您可以使用 JavaScript 特殊变量 this 来访问 API(this.api() 将提供 API 实例),因为 this 是 table 节点。
在本例中,我们使用附加到表格中所有 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 文档中描述的协议。