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(); } ); |
我的日期列数据具有此格式的日期,
导入脚本的顺序很重要。 您必须在排序插件之前包含数据表。 以下适用于我:
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插件。