我有下一个简单的表,我使用jQuery表排序器按列排序:
<table class="tablesorter" id="tableinvoices">
<thead>
<tr>
<th>Name</th>
<th>LastName</th>
<th>Age</th>
</tr>
</thead>
<tbody>
<tr>
<td><b id="n1">Sonia</b></td>
<td><b id="l1">Soto</b></td>
<td><b id="a1">20</b></td>
</tr>
<tr>
<td><b id="n2">Carlos</b></td>
<td><b id="l2">Rodriguez</b></td>
<td><b id="a2">21</b></td>
</tr>
<tr>
<td><b id="n3">Borja</td>
<td><b id="l3">Valera</td>
<td><b id="a3">21</td>
</tr>
</tbody>
</table>
如果我单击名称,而不是按 td 的值排序,而是按 id 排序。
如何按值排序?
感谢您的帮助,对不起我的英语不好。
这是一个解决方案:http://jsfiddle.net/shtrih/Mh75v/
$(document).ready(function() {
// call the tablesorter plugin
$("table").tablesorter({
// define a custom text extraction function
textExtraction: function(node) {
// extract data from id and return it
console.log(node.childNodes[0].innerHTML); // Make sure the output values
return node.childNodes[0].innerHTML;
}
});
});
我用了这个例子:http://tablesorter.com/docs/example-option-text-extraction.html
我假设你正在使用这个jQuery表排序器。
var myTextExtraction = function(node)
{
return node.id;
}
$(document).ready(function()
{
$("#tableinvoices").tableSorter( {textExtraction: myTextExtraction} );
}
);
一种方法 - 添加一个隐藏列(每个 tds 上的style="display:none"
应该可以解决问题。 将要作为排序依据的 ID 作为隐藏列的内容放置,而不是将它们作为 ID 添加到其他位置。 设置表排序器,以便隐藏列可排序,但名称列不可排序。 然后将一个 jquery onclick 侦听器添加到名称列的顶部,该侦听器将单击隐藏列的顶部。 这有点笨拙,但它应该能给你你需要的东西。
试试这个textExtraction
函数(演示):
$(function () {
$("#tableinvoices").tablesorter({
textExtraction: function (node) {
return $(node).find('b').attr('id');
}
});
});
但是,此文本提取函数假定每个表单元格都有一个 ID。