如何使用jQuery Tablesorter对包含两个div的列进行排序?

我正在使用jQuery Tablesorter对表进行排序。 我的一个列看起来像这样:

    

换句话说,有两个div,一个用绿色显示带有链接的是,另一个用红色显示带有链接的 。 其中一个div总是被隐藏,只要用户点击链接,这两个就会被切换。

jQuery Tablesorter无法对此列进行排序。 有没有办法让它这样做,或者我是否必须修改HTML才能使它工作?

您可以使用textExtraction回调:

 $(document).ready(function() { // call the tablesorter plugin $("table").tablesorter({ // define a custom text extraction function textExtraction: function(node) { // check you're at the right column if ($(node).find('.green').length == 1) { // extract data from markup and return it return $(node).find('div:not(.hidden)').find('span').text();; } else { return $(node).text(); } } }); }); 

我没有测试过,但它应该在理论上起作用

你会想要创建一个自定义解析器 。 它非常简单,您只需通过将函数传递给格式字段来指定如何解释单元格中的值。

无论内容如何复杂,对任何类型的列进行排序的通用方法:根据优先顺序将“sorted”属性添加到服务器端的“sorted”排序值(这比javascript更容易)。

例如

       
No<>/a> (verify)

然后在$(function()中添加以下代码

 $("table.tablesorter").tablesorter({ textExtraction: function(node){ return $(node).attr("sorter"); } });