jquery 数据表排序完成时激发事件

r1wp621o  于 2023-01-12  发布在  jQuery
关注(0)|答案(1)|浏览(134)

我的datatable初始化得很好,除了一些列需要很长时间(3-5秒)排序外,一切正常。我只有大约350行,但大约25列(不是所有列都能同时看到)。
我正在做类似这样的事情,使一列可见,然后排序。

$('#main_index').on('click', 'thead th', function() { 

                        var idx = table.column(this).index();
                        selected_data = table.column(idx).dataSrc();

    if (selected_data == 'diabetes_full') {
                                table.order([4, 'desc']);

                                table.columns('.col_rank').visible(false);
                                table.column(3).visible(true);
                                 table.draw();
                                $(".rank").hide();
                                $("#diabetes_full_rank").show();

                            } else if (selected_data == 'pop_with_diabetes') {
                                table.order([6, 'desc']);
                                table.columns('.col_rank').visible(false);
                                table.column(5).visible(true);
                                 table.draw();
                                $(".rank").hide();
                                $("#pop_with_diabetes_rank").show();
                            }
});

就像我说的,这很有效,但是有时候会有点慢。我不确定我能找到一种方法来加快速度(欢迎建议),但是我希望能够在排序过程中显示加载消息,并在排序完成后隐藏它。
我已经尝试了各种各样的事情工作了table.draw()包括:

$.when(table.draw()).then(//function to hide loading message);

我试过使用drawCallback和其他几个。我注意到的是,表的绘制基本上是即时的,但是排序的实际完成是在这之后。但是,我不知道如何将事件绑定到正在完成的排序上,或者数据表是否有办法处理这个问题。有什么建议吗?

cwtwac6a

cwtwac6a1#

我想你会想听听订单事件。
order事件-当表中包含的数据被排序时触发。你可以在这里找到更多的信息https://datatables.net/reference/event/。你可以在这里阅读更多关于如何监听数据表事件的信息:https://datatables.net/manual/events
编辑
我重新阅读了你的问题,意识到我可能对你需要使用的特定事件是错误的。如果你说你想在一个列被重新排序时触发一个操作(这实际上是我认为你想要的),你会想看看column-reorder(列已经被最终用户或API重新排序)。信息在同一个链接上。

相关问题