超过10行排序的HTML表无法工作
HTML table with more than 10 rows sorting is not working
我有一个问题,我的表不会排序(desc),如果我在表中有超过10行。它工作完美,如果我有10或更少的行,而不是更多。下面是我的代码:
function sortAndFadingRows(rowId) {
var $row = $(rowId);
var oldRowIndex = $row.index();
sortTable();
var newRowIndex = $row.index();
if (newRowIndex < oldRowIndex) {
$row.children().effect('highlight', { color: '#fff' }, 1000);
} }
var sortTable = function () {
var table = $("#tableId");
var sorts = table.find(".item").detach().toArray();
sorts.sort(function (a, b) {
var valA = parseInt($(a).find(".myValue").text());
var valB = parseInt($(b).find(".myValue").text());
return valA < valB;
});
table.append(sorts); };
我每次接收数据时都调用sortAndFadingRows(rowId)
,当我接收到数据时,我直接将其放入特定列中的td
中,以便根据该列对表进行排序。然后我发送行id来检查它的索引是否改变了。如果行跳转(其索引下降),则突出显示,否则不突出显示。就像我说的,如果我们有10行或更少,但不超过10行,它就能完美地工作。有人知道我哪里做错了吗?
排序比较器函数应该返回一个数字,而不是一个布尔值。return
语句应为
return valA - valB;
比较器返回值被解释为:
- 负数表示第一个项目应该排在第二个项目之前
- 一个正数表示第二个项目应该在第一个项目之前
- 0表示它们可以以任意顺序运行
JavaScript中.sort()
例程的规范明确允许该算法不稳定。这意味着当比较器返回0
时,项可能会被重新排序,而不是保持原来的顺序。
如果你需要稳定性,你可以在一些二级键上添加比较;也就是说,如果主键不同,则行中不重要的其他部分。要做到这一点,如果第一次比较结果为零,则必须提取副键:
// ...
var result = valA - valB;
if (result !== 0)
return result;
// Fetch secondary keys
valA = parseInt($(a).find(".secondary").text());
valB = parseInt($(b).find(".secondary").text());
return valA - valB;
如果没有二级键可以作为一种有意义的方式来保持顺序,您可以在排序之前对列表进行预处理,然后添加一个键,该键基于当前的顺序。
相关文章:
- 视频HTML没有'无法在Internet Explorer 11上工作
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- HTML标记在脚本标记中工作
- .html()不会'页面更改或刷新时无法工作
- 为什么jquery悬停在jsfiddle中可以工作,而在我的html布局中却不能
- ng绑定html不工作
- 如何让这个javascript var在HTML页面上工作
- HTML文件中的智能Javascript建议在Visual Studio代码更新后没有日志程序工作
- 带有Angular指令的HTML;附加时无法工作
- 如何使setTimeout脚本在html表单中正常工作
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- ajax代码工作时,使用javascript禁用html中的链接
- 在html文件中添加了多个外部javascript,其中一个停止工作
- 当我移动引用three.js的html文件时,three.js停止工作
- 使OnMouseEnter和OnMouseLeave在Chrome中工作 - html,JavaScript,jquer
- 可以'无法使dropotron脚本正常工作[HTML/CSS/JavaScript]
- 视频背景没有't工作(html,css,js)
- Javascript点计算器不工作(HTML选择/选项+ Javascript)
- 不工作HTML表行从jQuery append()
- 如何适应工作html Angular filter的javascript