使用tablesorter.js对表列进行排序。

我有一列图像,所以我使用textExtraction来获取图像的alt值进行排序。

现在,我想使用textExtraction对其他用逗号和货币符号显示的列进行排序。

独立地,两者都可以工作,但是我无法使它们都工作。

Tablesorter有一个我无法适应的example

textExtraction: {
  0: function(node, table, cellIndex){ return $(node).find("strong").text(); },
  1: function(node, table, cellIndex){ return $(node).find("div").text(); },
  2: function(node, table, cellIndex){ return $(node).find("span").text(); },
  3: function(node, table, cellIndex){ return $(node).find("em").text(); },
  4: function(node, table, cellIndex){ return $(node).find("a").text(); },
  '.date' : function(node, table, cellIndex){ return $(node).find("u").text(); }
}


我将代码修改如下:

$(document).ready(function($){
    $("#cardSort").tablesorter(
        {
            initWidgets: true,

            textExtraction: {
                0: function(s){
                    if($(s).find('img').length == 0) return $(s).text();
                    return $(s).find('img').attr('alt');
                },
                1: function(s){
                    return $(s).text().replace(/[,$£€]/g,'');
                }
            }
        }
    );
}
);


这似乎与表排序器示例相同,例如它正在使用编号函数方法。但是这种格式都行不通。

关于如何同时具有textExtraction功能的任何想法?

编辑添加:这是TableSorter版本2.0.5b

最佳答案

听起来您可能仍在使用原始版本的tablesorter(v2.0.5)...将textExtraction设置为在该版本上不起作用的对象,则需要使用我的fork of tablesorter



更新:如果必须使用v2.0.5,请尝试以下操作:

textExtraction: function(node) {
  var $cell = $(node),
    text = $cell.text();
  switch(node.cellIndex) {
    case 0:
      return $cell.find('img').length ? $cell.find('img').attr('alt') : text;
    case 1:
      return text.replace(/[,$£€]/g,'');
    default:
      return text;
  }
}


注意:当colspan中有tbody时,此方法将无法正常工作。

关于javascript - tablesorter.js多个textExtraction,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48490371/

10-15 20:16