0

我有一个不错的 jQuery 数据表,其中包含可排序的列。收到请求以捕获 1) 单击的列和 2) 单击时的排序方向。我已经遍历了 datatables 对象中的各种与排序相关的对象,但似乎无法获得这两个奇异值。

出于这个问题的目的,我希望最终结果类似于 alert('You clicked the column ' + column) 和 alert('The sort direction when you click is ' + sort direction)。

我该如何做到这一点?与往常一样,提前致谢。

4

1 回答 1

0

如果我正确理解您的问题,基本上您只需要1条特定信息即可完成此操作:表中行(用户正在排序)的初始位置。

有不同的方法来获得它,但最简单的方法可能是简单地为每一行设置一个数据属性,以在生成表时保存该行的初始位置。

例子:

$.each($YOURTABLE.children(), function(idx, val) { val.data('position', idx);});

现在,您需要做的就是在sortstop事件上,获取该值并将其与该行的新位置进行比较:

$YOURTABLE.bind('sortstop', function(event, ui) {
    //$(ui.item[0]) selects the user-selected row
    var oldPosition = $(ui.item[0]).data('position'),
        newPosition;    

    //get row's new position
    $.each($YOURTABLE.children(), function(idx, val) {
        if($(val) === $(ui.item[0]))
            newPosition = idx; //store new position
    }
    //now compare
    if(oldPosition > newPosition)
        ////alert user row (oldPosition) moved up
    else if(oldPosition < newPosition)
        ////alert user row (oldPosition) moved down

    //refresh all row positions using first code example
} 

});

希望这应该为您指明正确的方向。

于 2012-10-19T18:55:55.230 回答