如何使用jQuery按td.points单元格值从高到低重排表格行
jQuery实现表格按积分列降序排序
直接用下面的代码即可实现需求,已经兼容你给出的表格结构:
$(document).ready(function() { const $tableBody = $('#livescoring_summary tbody'); // 排除第一行表头,提取所有需要排序的数据行 const dataRows = $tableBody.children('tr:not(:first)').get(); // 按points列数值降序排序 dataRows.sort(function(rowA, rowB) { const scoreA = parseFloat($(rowA).find('.points').text().trim()); const scoreB = parseFloat($(rowB).find('.points').text().trim()); return scoreB - scoreA; }); // 把排序后的行重新插入tbody $tableBody.append(dataRows); // 可选:修复排序后奇偶行样式错乱的问题 $tableBody.children('tr:not(:first)').each(function(i) { $(this).removeClass('eventablerow oddtablerow') .addClass(i % 2 === 0 ? 'eventablerow' : 'oddtablerow'); }); });
代码说明
- 第一行的"Week 1"标题行不会参与排序,始终固定在表格最顶部
- 提取points值时做了
parseFloat转换,避免字符串排序出现的逻辑错误(比如字符串对比下"61.000"会大于"61.875"的问题) - 排序后重新插入行用了jQuery的
append方法,原有行会被自动移动,不会产生重复元素 - 如果不需要保留原有的奇偶行背景样式,可以删掉最后修复样式的那段代码
内容的提问来源于stack exchange,提问作者MShack
相关产品推荐
相关产品推荐

