使用不同函数时 DataTables 中出现奇怪的 class 名称问题

Strange class name issue in DataTables when using different functions

我在使用 DataTables 时遇到了一个奇怪的问题。在文档中,有时它会显示带有大写 D:

的 class 名称
var table = $('#example').DataTable();

其他时候使用小写 D:

var table = $('#example').dataTable();

两者都有效.. 大多数时候。我的问题是两个功能相互冲突。一个需要 class 小写,一个需要大写。

例如,search function 需要大写(有效):

https://jsfiddle.net/362cz1z7/

如果我使用小写(中断):

https://jsfiddle.net/362cz1z7/1/

我也想在同一个 table 上使用 fnSettings 函数...当然它需要小写所以它破坏了我的搜索代码。

大写(换行符):

https://jsfiddle.net/362cz1z7/2/

小写(有效):

https://jsfiddle.net/362cz1z7/3/

两者都报错'Uncaught TypeError: undefined is not a function'。我完全糊涂了。如果您在文档中查看他们的示例,有些是大写的,有些是小写的。

源代码中的注释比我更好地描述了这种情况(从第 14,670 行开始):

// With a capital `D` we return a DataTables API instance rather than a
// jQuery object
$.fn.DataTable = function ( opts ) {
    return $(this).dataTable( opts ).api();
};

// All properties that are available to $.fn.dataTable should also be
// available on $.fn.DataTable
$.each( DataTable, function ( prop, val ) {
    $.fn.DataTable[ prop ] = val;
} );

所以我猜想如果您试图直接访问 API,则使用大写字母 D,如果您在页面上操作对象,则使用小写字母 d。凌乱!