jQuery tablesorter 未正确排序数字
我几天来一直在尝试让 jQuery 表排序器正确地对我的表列中的数字进行排序。
我正在使用这两个脚本的当前最新版本。
该表呈现良好,但对数字进行排序无法正常工作。
当我对数字列进行排序时,它给出以下结果:
8 7 4 32 31 3 等等..
你会期望: 32 31 8 等等...
我读了一些关于添加额外 javascript 代码的评论,但我找不到任何好的 javascript 示例。
我现在使用的 jQuery 如下:
$(document).ready(function()
{
$("#table1")
.tablesorter(
{
sortList: [[0,0]],
widthFixed: true,
widgets: ['zebra']
} )
}
);
这是我的 HTML:
<table id="table1" class=tablesorter>
<thead>
<tr>
<th width=65>Name</th>
<th width=40>Count</th>
</tr>
</thead>
<tbody>
<tr><td>Name_1</td><td>32</td></tr>
<tr><td>Name_2</td><td>12</td></tr>
<tr><td>Name_3</td><td>11</td></tr>
<tr><td>name_4</td><td>14</td></tr>
<tr><td>Name_5</td><td>7</td></tr>
<tr><td>Name_6</td><td>3</td></tr>
<tr><td>Name_7</td><td>32</td></tr>
<tr><td>Name_8</td><td>31</td></tr>
<tr><td>Name_9</td><td>35</td></tr>
</tbody>
</table>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这解决了问题。
告诉 javascript 将值作为数字处理可以使排序工作正确。
脚本中没有将数字值检查为数字,这仍然有点愚蠢。但我想最终有一个更高的目的。
感谢大家的时间和帮助
/Fons
This solved the problem.
Telling the javascript to handle the value's as a digit made the sorting work correct.
Still bit silly that number values are not checked in the script as being numbers. But i guess there is a higher purpose for that in the end.
Thanks all for your time and help
/Fons
希望这会对找到这篇文章的人有所帮助,您现在可以在表排序器中简单地使用。
Hopefully this will help someone if they find this post, in tablesorter you can now simply use.
这对其他人(对我来说不是)可能是显而易见的,但要使解决方案与 {sorter: 'digit'} 元数据一起使用,您需要使用 jQuery 元数据插件。
This may have been obvious to others (not to me) but to get the solution working with the {sorter: 'digit'} metadata you need to use the jQuery metadata plugin.
您也可以尝试这样做:
...在仅提取文本后,将排序单元格的内容视为整数。
You might try this as well:
... this treats the sorted cells' content as integers, after extracting just the text.
我知道这是一个老问题,但我遇到了同样的问题,您应该首先检查插件的版本,而不是尝试此处发布的任何解决方案。当我发现我没有使用最新版本(2.0.5)时,所有问题都解决了
I know this is an old question, but I came across the very same problem and instead of trying ANY solution posted here, you should first check the version of your plugin. Every problem was solved when I found out I wasnt using the newest version (2.0.5)
看起来你需要填充你的数字。这就解释了为什么 8、7 和 4 排在 32 和 31 之前。
试试这个:
如果需要对更大的数字进行排序,请使用高于 2 的值。
It looks like you need to pad your numbers. That explains why 8, 7, and 4 are ordered before 32, and 31.
Try this:
Use higher value than 2 if you need to sort bigger numbers.
你能也显示你的html吗? Tablesorter 应该检测并处理数字排序,而无需任何特殊选项。你的数值有可能被html包围吗?在这种情况下,您可能需要自定义方法来提取来自html。
参考链接中的示例:
Can you show your html as well? Tablesorter ought to detect and handle numeric sorting without any special options. Is it possible that your numeric values are surrounded by html? In that case you may need a custom method to extract the values from the html.
Example from the referenced link:
在 jquery.tablesorter.js 代码中查找:
并将其替换为:
Find in jquery.tablesorter.js code:
And replace it with: