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

时间:2014-08-08 15:37:49

标签: datatables

此插件的绝大多数文档都表明您使用

初始化它
$('#example').dataTable();

http://www.datatables.net/examples/api/multi_filter_select.html使用

进行初始化
$('#example').DataTable();

由此产生的对象差异很大,上面的示例网址在我使用小写“D'”进行初始化时不起作用,但是所需要的其他所有内容小写' D'初始化。

有人可以向我解释为什么会有区别,以及如何让两人一起玩得很好?基本上我需要多过滤器选择功能,但也需要处理其他一些看似不喜欢大写' D'初始化。

1 个答案:

答案 0 :(得分:81)

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


dataTable构造函数

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

dataTable是oldschool dataTables构造函数,它返回一个jQuery对象。这个jQuery对象富含匈牙利表示法格式的一组API方法,例如fnFilterfnDeleteRow等。查看API方法here的完整列表。示例:

table.fnDeleteRow(0); 
table.fnAddData(['E', 'F']);
所有 1.9.x / 1.10.x 版本均支持

dataTable


DataTable构造函数

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

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

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

组合dataTable和DataTable

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

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

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

  

基本上我需要多过滤器选择功能,但也需要   需要处理其他一些似乎不喜欢的调用/插件   大写'D'初始化。

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


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

好吧,你不需要来使用DataTable构造函数。如果您不使用新API,则没有理由使用DataTable构造函数。不推荐使用oldschool dataTable构造函数。 DataTables主要是一个人的工作。维护和开发并且显然非常耗费时间来维护一个包含论坛,手册,大量示例等的庞大网站是一项艰巨的任务。这只是猜测,但我认为Allan Jardine现在只是将dataTable更改为DataTable实际需要的地方,只是因为他不能一步到位。