关于jquery:TypeError:$ .fn.dataTable.moment不是函数

TypeError: $.fn.dataTable.moment is not a function

我正在使用jquery DataTable插件,在我的一个表中,我想根据日期时间列对结果进行排序。 所以,我包括moment.js版本2.13.0和我的dataTable版本是1.10.10,我的jQuery版本是1.9.1。

正如最新的dataTable日期时间排序插件文章https://datatables.net/blog/2014-12-18所示,我尝试了以下但在控制台中我有

1
2
TypeError: $.fn.dataTable.moment is not a function
$.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');

在我的html页面中,

1
2
3
4
$(document).ready(function() {
    $.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');
    $('#myTable').DataTable();
} );

我的日期列数据具有此格式的日期,09-May-2016 19:38:00。 我已经改变了dataTable和moment.js插件源包含在我的html页面中的顺序。 但我仍然得到同样的错误。 可能是什么问题?


导入脚本的顺序很重要。 您必须在排序插件之前包含数据表。 以下适用于我:

1
2
3
4
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js">
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js">
<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js">
<script src="//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js">

浏览器缓存问题。 我包含的JS文件未在浏览器中正确下载导致问题。 我清除了缓存并使用了CDN版本。 它工作得很好。
如果将来有人需要,这是我的工作代码,

JS进口:

1
2
3
4
<script th:src="@{/js/jquery-1.8.3.js}" />
<script th:src="@{/js/jquery.datatables.min.js}" />
<script th:src="@{//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js}" />
<script th:src="@{//cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js}" />

DataTable init:

1
2
3
4
5
6
7
8
9
10
$(document).ready( function () {

    $.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');

    $('#jobcardsTable').DataTable({
        responsive: true,
       "order": [[ 2,"desc" ]]
    });

});

因此,当最初数据表加载时,使用moment.js从第三列解析自定义格式化日期,并按降序排序。


以下两个文件是必需的;

  • moment.min.js,和
  • datetime-moment.js

按以下顺序加载所有文件:

  • 时刻,
  • DateTables,
  • DataTables + Moment插件。