使用jQuery TableSorter对包含下拉(SELECT)标记和美元符号($)的列进行排序

Dec*_*ava 6 javascript sorting jquery tablesorter

我正在使用神话般的jQuery TableSorter插件自动将排序功能添加到表的列中(只需单击每个列的标题).除了其中几个列之外,所有列都能完美运行.

1)其中一个列的单元格在前面包含美元符号(例如:$ 20,$ 10,$ 5).分拣不正常; 它按字母顺序排序(因为所有单元格内容都以$开头,所以它们都被错误地捆绑在一起).什么代码会迫使分拣机从第二个角色开始,从而忽略美元符号?

2)另一列有动态下拉列表(每个单元格中有1个SELECT标签),我希望按字母顺序对每列SELECT标签内当前选定的值进行排序.有任何想法吗?

如果你至少可以指出我正确的方向并让我知道如何在两种场景中的每一种中自定义排序,我将非常感激.

提前致谢!!

vor*_*ent 7

这对我有用.如果没有选择选项,可能需要一些调整...

$(document).ready(function(){
    // Sortable tables
    $('table').tablesorter ({
        cancelSelection: true,
        sortList: [[0,0]],
        textExtraction: function(node) {
            // Check if option selected is set
            if ($(node).find('option:selected').text() != "") {
                return $(node).find('option:selected').text();
            }
            // Otherwise return text
            else return $(node).text();
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


Tee*_*ker 3

2)另一列有动态下拉菜单(每个单元格中有 1 个 SELECT 标签),我希望它按每个 SELECT 标签内当前选定的值按字母顺序对列进行排序。有任何想法吗?

我只是想实现这一目标,但不可能以简单的方式实现。解析器函数作为参数获取的字符串 (..format: function(s) {..) 已从标签中剥离。因此无法确定选择哪个值。为此,必须修改表排序器。

我现在所做的是在前面添加一个隐藏选项,其中包含所选值。这是一个解决方法。但就像这样,甚至不需要编写自己的解析器和表排序器即可正确排序。

<option style="display:none">B</option>
<option value="A">A</option>
<option value="B" selected="selected">B</option>
<option value="C">C</option>
...
<option style="display:none">A</option>
<option value="A"  selected="selected">A</option>
<option value="B">B</option>
<option value="C">C</option>
Run Code Online (Sandbox Code Playgroud)

tablesorter 现在排序的字符串是:

  • 巴布克
  • 美国广播公司