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方法,比如fnFilter
, fnDeleteRow
等等。 在这里查看完整的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
,实际上它只是在一个步骤中完成的。