检查列是否已排序

时间:2012-10-26 21:36:06

标签: jquery d3.js

我使用以下代码使用标题行作为触发器对表中的列进行排序。

var tr = d3.selectAll("tbody tr");  
d3.selectAll("thead th").data(forsort).on("click", function(k) {  
    tr.sort(function(a,b){  
        return a[k] - b[k]; });  
}); 

问题是,有相当多的单元格具有相同的值。当我第一次点击对表格进行排序时,它会完成预期的操作。但是,如果我再次单击它,它将重新排列那些具有相同值单元格的行(来自用于排序的列)。

我想知道是否还有检查列是否已经排序,如果是,则不允许重复排序。 任何替代解决方案也是受欢迎的。

谢谢!

2 个答案:

答案 0 :(得分:3)

这是一个想法:

var tr = d3.selectAll("tbody tr");  
lastSort = null;
d3.selectAll("thead th").data(forsort).on("click", function(k) { 
    if(lastSort != k){
        tr.sort(function(a,b){  
            return a[k] - b[k]; 
        });
        lastSort = k;
    }
}); 

答案 1 :(得分:1)

只需跟踪您最后如何对表格进行排序,并忽略对同一标题的重复点击。

或者,如果用户再次单击标题,您可能希望反转排序,这对于可排序列表来说是相当常见的行为。然后,您将跟踪最后排序的列和方向。