jQuery数据表按行内集合排序
我有一个用jQuery数据表按行内集合排序,jquery,datatables,Jquery,Datatables,我有一个用manual/API/任何带有组集之类的东西创建的数据表。有人能帮忙吗 我不喜欢当前的结构,我可以随心所欲地操纵它,只要它保持每行分组集的“外观”。这有两个部分。较大的是自定义排序,其次是较小的排序,用于检测是按第一个div还是第二个div排序 Datatables提供了一些自定义排序插件的文档,但是通过查看它们的特性,很容易创建自己的插件。基本上,我在这里做的是创建一个名为“div toggle”的自定义排序插件 对于我提出的解决方案,将类添加到数据中的div中是最简单的,如下所示:
manual/API/任何带有组集之类的东西创建的数据表。有人能帮忙吗
我不喜欢当前的结构,我可以随心所欲地操纵它,只要它保持每行分组集的“外观”。这有两个部分。较大的是自定义排序,其次是较小的排序,用于检测是按第一个div还是第二个div排序
Datatables提供了一些自定义排序插件的文档,但是通过查看它们的特性,很容易创建自己的插件。基本上,我在这里做的是创建一个名为“div toggle”的自定义排序插件
对于我提出的解决方案,将类添加到数据中的div中是最简单的,如下所示:
<td>
<div class="firstDiv">USA</div>
<div class="secondDiv">Canada</div>
</td>
我在这里讨论的方式是,“firstDiv”是一个布尔全局变量,它告诉插件在排序时是使用第一个div还是第二个div。您可以将事件侦听器应用于正在单击的标头以切换此值:
$('.dataTable').on('click', 'thead tr th:eq(0)', function () {
if (firstDiv) firstDiv = false;
else firstDiv = true;
});
要告诉dataTables在特定列上使用此排序插件,请在初始化时将声明添加到“columns”属性中:
$(...).DataTable(
{
"columns" : [ {"orderDataType": "div-toggle"} ]
}
);
这将用于将此排序插件应用于只有一列的dataTable,只是为了让您了解如何使用它
请注意:毫无疑问,在我的示例代码中,您可以使用更好的选择器,这可能是一种更有效的排序解析方法,但这段代码应该可以工作,并为您提供了一个良好的基础,让它工作得更好。我现在没有时间深入研究,但是DataTables网站上的几个链接可能会对我有所帮助,但我以前没有注意到:,@Adam Aweasome,谢谢你,我会研究这些链接,如果我找到答案,我会发布一个答案(相信你:D)
$.fn.dataTable.ext.order['div-toggle'] = function (settings, col) {
return this.api().column(col, { order: 'index' }).nodes().map(function (td, i) {
var cellData;
if (firstDiv) cellData = $($(td).html()).find('.firstDiv').text();
else cellData = $($(td).html()).find('.secondDiv').text();
return cellData;
});
}
$('.dataTable').on('click', 'thead tr th:eq(0)', function () {
if (firstDiv) firstDiv = false;
else firstDiv = true;
});
$(...).DataTable(
{
"columns" : [ {"orderDataType": "div-toggle"} ]
}
);