JQuery TinySort没有正确排序数字

Rig*_*Rig 1 jquery jquery-plugins

我在页面上有多个html表,每个表都有一个标题行.当我单击该列标题时,它应该按该列对所有表进行排序.我专门引用的列包含一个锚点,用于文本显示整数值.

当我单击列标题时,我遇到了错误的排序.假设我在此屏幕上有以下内容:

83
84
104
Run Code Online (Sandbox Code Playgroud)

现在我点击最终结果变为的列标题:

104
83
84
Run Code Online (Sandbox Code Playgroud)

我编写的代码用于在下一次单击时交替排序,会发生的是104和84围绕83旋转.我认为发生的是它正在比较这些不正确.我已经使用更大的数据集对其进行了测试,当任何数字不共享共同的数字时问题就会出现.

有什么东西(也许是我失踪的旗子?)告诉这件事要正确排序吗?我所有更像字符串的数据都正确排序.

码:

<html>
<head>
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="jquery.tinysort.min.js"></script>
    <script language="javascript">
    var aAsc = [];
    $(".SubHead").click(
        function() {
            var nr = $(this).index();
            aAsc[nr] = aAsc[nr]=='asc'?'desc':'asc';
            $('.resultTable>tbody>tr:not(.SubHeadRow)').tsort("td:eq("+nr+")",{order:aAsc[nr]});
       }
   );
    </script>
</head>
<body>
    <table class="resultTable" border="1">
        <tr class="SubHeadRow">
            <td class="SubHead">
                <a href="#">ID</a>
            </td>
            <td class="SubHead">
                <a href="#">Application Header</a>
            </td>
            <td class="SubHead">
                <a href="#">Version Header</a>
            </td>
        </tr>
        .
        .
        .
    </table>
    .
    .
    .
</body>
Run Code Online (Sandbox Code Playgroud)

编辑:这是插件的链接:http://tinysort.sjeiti.com/

上面我推荐的代码包含了html的样本.我不在其中,所以它可能不是100%.并非我怀疑它很重要,但表格是在ColdFusion 7MX中动态创建的.

Rig*_*Rig 5

好,

我回答了自己的问题.今天早上回顾了TinySort网站,我发现了一个专门用于此的区域.花了好几个小时专注于这个功能后,很容易看出它是如何被忽视的.答案是http://tinysort.sjeiti.com/解析自定义排序功能,有一些小的调整.

我为整数列创建了一个自定义大小写并传递了一个自定义比较器函数.见下文:

var aAsc = [];
$(".SubHead").click(
    function() {
        var nr = $(this).index();
        aAsc[nr] = aAsc[nr]=='desc'?'asc':'desc';
        if(nr == 0){
            $('.resultTable>tbody>tr:not(.SubHeadRow)').tsort("td:eq("+nr+")", 
                {
                    sortFunction:function(a,b) {
                        var order = (aAsc[nr]=='asc')?1:-1;
                        var i = parseInt(a.s);
                        var j = parseInt(b.s);
                        if( i===j ){
                            return 0;
                        } else {
                            return (i > j)?order:-1*order;
                        }
                    }
                }
            );
        } else {
            $('.resultTable>tbody>tr:not(.SubHeadRow)').tsort("td:eq("+nr+")",{order:aAsc[nr]});
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

  • TinySort应该选择将所有值都视为数字. (3认同)