Jquery 用数字对 table 数据进行排序
Jquery sort table data with numbers
Jquery 用数字
排序 table 数据
我已将此 table 升序排序,但我希望它按 a1、a2、a3、a11 的顺序排列。
有人能帮忙吗?
function sortTable(table, order) {
var asc = order === 'asc',
tbody = table.find('tbody');
tbody.find('tr').sort(function(a, b) {
if (asc) {
return jQuery('td:first', a).text().localeCompare(jQuery('td:first', b).text());
} else {
return jQuery('td:first', b).text().localeCompare(jQuery('td:first', a).text());
}
}).appendTo(tbody);
}
sortTable($('#mytable'),'asc');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table name="mytable" id="mytable">
<tbody>
<tr><td>a 11</td></tr>
<tr><td>a 3</td></tr>
<tr><td>a 2</td></tr>
<tr><td>a 1</td></tr>
</tbody>
</table>
因为比较是从左到右进行的,所以您可以尝试用零填充数字,例如 a 01、a 02、a 03、a 11
@Nenad 搞定了:'kn' 似乎不起作用,在 .localeCompare() 中使用选项 numeric
,例如:
.localeCompare(jQuery('td:first', b).text(),'en',{numeric:true});
这将解决编号问题。看这里:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
您可以将选项参数设置为{numeric: true }
var sorted = $('#mytable tbody tr').sort(function(a, b) {
var a = $(a).find('td:first').text(), b = $(b).find('td:first').text();
return a.localeCompare(b, false, {numeric: true})
})
$('#mytable tbody').html(sorted)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table name="mytable" id="mytable">
<tbody>
<tr><td>a 11</td></tr>
<tr><td>a 3</td></tr>
<tr><td>a 2</td></tr>
<tr><td>a 1</td></tr>
</tbody>
</table>
Jquery 用数字
排序 table 数据我已将此 table 升序排序,但我希望它按 a1、a2、a3、a11 的顺序排列。
有人能帮忙吗?
function sortTable(table, order) {
var asc = order === 'asc',
tbody = table.find('tbody');
tbody.find('tr').sort(function(a, b) {
if (asc) {
return jQuery('td:first', a).text().localeCompare(jQuery('td:first', b).text());
} else {
return jQuery('td:first', b).text().localeCompare(jQuery('td:first', a).text());
}
}).appendTo(tbody);
}
sortTable($('#mytable'),'asc');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table name="mytable" id="mytable">
<tbody>
<tr><td>a 11</td></tr>
<tr><td>a 3</td></tr>
<tr><td>a 2</td></tr>
<tr><td>a 1</td></tr>
</tbody>
</table>
因为比较是从左到右进行的,所以您可以尝试用零填充数字,例如 a 01、a 02、a 03、a 11
@Nenad 搞定了:'kn' 似乎不起作用,在 .localeCompare() 中使用选项 numeric
,例如:
.localeCompare(jQuery('td:first', b).text(),'en',{numeric:true});
这将解决编号问题。看这里:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
您可以将选项参数设置为{numeric: true }
var sorted = $('#mytable tbody tr').sort(function(a, b) {
var a = $(a).find('td:first').text(), b = $(b).find('td:first').text();
return a.localeCompare(b, false, {numeric: true})
})
$('#mytable tbody').html(sorted)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table name="mytable" id="mytable">
<tbody>
<tr><td>a 11</td></tr>
<tr><td>a 3</td></tr>
<tr><td>a 2</td></tr>
<tr><td>a 1</td></tr>
</tbody>
</table>