此插件的绝大多数文档都表明您使用
初始化它$('#example').dataTable();
但http://www.datatables.net/examples/api/multi_filter_select.html使用
进行初始化$('#example').DataTable();
由此产生的对象差异很大,上面的示例网址在我使用小写“D'”进行初始化时不起作用,但是所需要的其他所有内容小写' D'初始化。
有人可以向我解释为什么会有区别,以及如何让两人一起玩得很好?基本上我需要多过滤器选择功能,但也需要处理其他一些看似不喜欢大写' D'初始化。
答案 0 :(得分:81)
基本上,两个构造函数返回不同的对象。
var table = $(<selector>).dataTable()
dataTable
是oldschool dataTables构造函数,它返回一个jQuery对象。这个jQuery对象富含匈牙利表示法格式的一组API方法,例如fnFilter
,fnDeleteRow
等。查看API方法here的完整列表。示例:
table.fnDeleteRow(0);
table.fnAddData(['E', 'F']);
所有 1.9.x / 1.10.x 版本均支持 dataTable
。
var table = $(<selector>).DataTable()
DataTable构造函数是在 1.10.x 中引入的,它返回一个巨大的API对象,对页面,行,单元格等有完全的读/写访问权限,请参阅manual。示例等价:
table.row(0).remove();
table.row.add(['E', 'F']).draw();
如果你维护旧代码,或者由于某种原因需要使用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
构造函数。如果您不使用新API,则没有理由使用DataTable
构造函数。不推荐使用oldschool dataTable
构造函数。 DataTables主要是一个人的工作。维护和开发并且显然非常耗费时间来维护一个包含论坛,手册,大量示例等的庞大网站是一项艰巨的任务。这只是猜测,但我认为Allan Jardine现在只是将dataTable
更改为DataTable
实际需要的地方,只是因为他不能一步到位。