表格排序无法按预期工作

时间:2016-06-12 10:11:13

标签: javascript jquery sorting

我有这个代码尝试按最低价格到最高价格对表格进行排序(表格由ajax填充)。

继承我的排序代码

$("#tableid tbody tr")
    .detach()
    .sort(function(a, b) {

        var dataA1 = $(a)
        .find("td:eq(5)")
        .text()
        .trim();

        var dataB1 = $(b)
        .find("td:eq(5)")
        .text()
        .trim();

        return parseFloat(dataA1.substring(1)) - parseFloat(dataB1.substring(

            1));

        })
        .appendTo('#tableid');

然而,我确实遇到了一个持续发生的问题

table rows broken

正如你所看到的,这已经破了。空白行确实包含一些文本并位于colspan 6中。我想要的是这些是在桌子底部,结果在顶部。

任何想法如何做到这一点?

修改

<tr style="font-weight:bold">
        <td>
          <%= image_tag("provider-logo.png", style: "width: 140px") %>
        </td>
        <td colspan="6">
          No Tickets Are available from provider
        </td>
      </tr>

这是一个有colspan的表行(我把colspan 6放在过滤器中)

由于 萨姆

1 个答案:

答案 0 :(得分:0)

使用您已有的内容,添加过滤器,并使用prependTo代替appendTo:

$("#tableid tbody tr")
    .filter(function() { return $(this).find('td[colspan="6"]').length == 0; })
    .detach()
    .sort(function(a, b) {

        var dataA1 = $(a)
        .find("td:eq(5)")
        .text()
        .trim();

        var dataB1 = $(b)
        .find("td:eq(5)")
        .text()
        .trim();

        return parseFloat(dataA1.substring(1)) - parseFloat(dataB1.substring(

            1));

        })
        .prependTo('#tableid');