dataTable()与DataTable() – 为什么有差异,我如何使它们一起工作?

这个插件的绝大多数文档都表明你用它来初始化它

$('#example').dataTable(); 

不过http://www.datatables.net/examples/api/multi_filter_select.html初始化使用

 $('#example').DataTable(); 

由此产生的对象差别很大,上面的示例URL在用小写字母“D”初始化时不起作用,但其他几乎所有的事情都需要小写字母“D”初始化。

有人可以向我解释为什么有什么区别,以及如何让这两个人在一起好吗? 基本上我需要多滤波器selectfunction,但也需要join一些其他的调用/插件,这似乎不喜欢大写'D'初始化。

基本上,这两个构造者返回不同的对象。


数据表构造函数

 var table = $(<selector>).dataTable() 

dataTable是oldschool的dataTables构造器,它返回一个jQuery对象。 这个jQuery对象丰富了一套匈牙利符号格式的API方法,比如fnFilterfnDeleteRow等等。 在这里查看完整的API方法列表。 例子 :

 table.fnDeleteRow(0); table.fnAddData(['E', 'F']); 

所有1.9.x / 1.10.x版本都支持dataTable


数据表构造函数

 var table = $(<selector>).DataTable() 

DataTable构造函数是在1.10.x中引入的,并返回一个巨大的API对象,具有对页面,行,单元格等的完全读/写访问权限,参见手册 。 示例等价:

 table.row(0).remove(); table.row.add(['E', 'F']).draw(); 

结合dataTable和DataTable

如果你维护旧的代码,或者由于某种原因需要使用oldschool的dataTable构造函数,但仍然需要使用新的API,那么jQuery对象是通过.api()方法扩展的(从1.10.0开始 ),该方法返回新的API 。 示例等价:

 var table = $('#example').dataTable(); table.api().row(0).remove(); table.api().row.add(['E', 'F']).draw(); 

table.fnDeleteRow(0)这样的旧API仍然有效。 所以你的关心:

基本上我需要多滤波器selectfunction,但也需要join一些其他的调用/插件,这似乎不喜欢大写“D”初始化。

正如你所看到的,你可以做到这一点! 以旧的方式初始化dataTable,并在需要访问新的API时使用.api()


为什么有这么多官方的例子使用dataTable()?

那么,你不需要使用DataTable构造函数。 如果你不使用新的API,没有理由使用DataTable构造器。 oldschool dataTable构造函数不被弃用。 DataTables大多是一个男人的工作。 维护和发展是一项艰巨的任务,维护一个庞大的论坛,手册,例子等网站显然非常耗时。 这只是一个猜测,但我认为现在Allan Jardine只是将dataTable改成了DataTable ,实际上它只是在一个步骤中完成的。