我目前正在使用 Mottie 版本的 tablesorter 来构建目录。我在同一个表格单元格中有一个姓名字段(名字和姓氏的组合)。大多数数据条目都很简单(名字姓氏),我设置了代码,以便通过使用以下方法交换姓氏和名字来排序:
文本提取:{
0:函数(节点){
//交换名字和姓氏进行排序
return $.trim($(node).text() || '').replace(/(\w+)\s(\w+)/g,'$2 $1');
}
}
不幸的是,有一些人有自己喜欢的名字,并且会出现在表格中,如下所示:
[名字(首选名称)姓氏]
排序最终仅按名字排序。
例如,它排序如下:
亚历克斯·亚当斯
罗伯特(鲍勃)罗弗
布鲁斯·布莱克
凯特琳·克鲁兹
亚当(戴夫)弗朗西斯
伊莱恩·埃文斯
但我希望它只使用姓氏,例如:
亚历克斯·亚当斯
布鲁斯·布莱克
凯特琳·克鲁兹
伊莱恩·埃文斯
亚当(戴夫)弗朗西斯
罗伯特(鲍勃)罗弗
我并没有完全掌握正则表达式,所以我不确定是否有一种简单的方法可以使其始终按姓氏排序。
任何帮助(包括有关此替换的一些解释。(正则表达式)如何工作,将不胜感激!
谢谢!
最佳答案
我不会使用 textExtraction
方法,因为它适用于所有表格单元格。
相反,尝试这个解析器。它使用数组操作将姓氏移到前面 ( demo )
$(function() {
$.tablesorter.addParser({
id: 'last-name',
is: function() {
return false;
},
format: function(str) {
var parts = (str || '').split(/\s+/),
last = parts.pop();
parts.unshift(last);
return parts.join(' ');
},
// set type, either numeric or text
type: 'text'
});
$('table').tablesorter({
theme: 'blue'
});
});
不要忘记添加类名来设置解析器:
<th class="sorter-last-name">Name</th>
关于javascript - Tablesorter - 按姓氏排序,忽略中间名/首选姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209618/