切换 jquery DataTables 列是否可排序

toggle whether or not a jquery DataTables column is sortable

我已经看到很多关于如何使用 sortable 或 not-sortable 的列初始化 DataTable 的信息。但是,我无法弄清楚 disable/enable 在 列上排序 之后 table 已经初始化。我找到了一个非常 hacky 的方法来做到这一点,但是有没有正确的方法来做到这一点 API?

我的攻略是针对th,复制click事件,解绑,再重新绑定,像这样

var _click=$._data($('#myTH')[0],"events").click[0];
$('#myTH').unbind("click");
//do some stuff
//reattach
$('#myTH').bind("click",_click);

一个简单的解除绑定非常适合将其关闭和保持关闭状态,但我需要能够多次切换它。我不喜欢我的解决方案,因为

  1. $._datajQuery 内部的,不应依赖并且
  2. 似乎应该有一个简单的方法可以使用标准 DataTables API

我使用的是 1.10 版本

如果您的列由 JSON 对象定义,您可以将 bSortable 设置为 true 或 false。我只是在服务器上动态地进行了更改,但我认为没有什么可以阻止您在客户端上进行更改并重新绘制 table.

JSON 的列看起来像

var columns = [{"bSortable":false,"sWidth":"80px","sTitle":"Fancy Column 1 Title","mData":"Id"},{"bSortable":false,"sWidth":"80px","sTitle":"Fancy Column 2 Title","mData":"name"}]

table = $j('#datatable').dataTable({
                    'sPaginationType': 'custom',
                    'aoColumns': columns});