Jquery用数字排序表数据

时间:2017-09-15 11:16:31

标签: javascript jquery sorting tablesort

Jquery对数字进行排序表数据

我按升序对此表进行了排序,但我想按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>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

您可以将选项参数设置为{numeric: true }

&#13;
&#13;
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)
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

因为比较是从左到右进行的,所以你可以尝试使用零填充数字,如01,a 02,a 03,a 11

答案 2 :(得分:0)

@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