Jquery tablesorter - 连字符bug

时间:2012-03-16 07:26:59

标签: jquery tablesorter

我做了一个非常基本的例子,当我在第一个<tr> <td>(第一行,第一个单元格)上使用连字符时,tablesorter不再有效。
我正在使用jquery 1.7.1和最新tablesorter.min.js

代码示例:

作品 - &gt;没有连字符: http://jsfiddle.net/6gjLs/4/
作品 - &gt;第二行连字符http://jsfiddle.net/8Wet2/4/
不工作 - &gt;第一行第一个td上的连字符: http://jsfiddle.net/YkaCv/4/

您可以看到的代码在3个示例中完全相同,只有表数据发生了变化。

有人遇到过同样的问题吗?任何解决方法?

3 个答案:

答案 0 :(得分:3)

实际上,当tablesorter试图确定每列中包含哪种数据时,它会与短划线混淆......是文本还是减号?如果您将debug设置为true来运行该插件,您会看到它将解析器设置为digit。这是一个updated demo

所以最好的非hacky解决方案是将头解析器设置为text:

$(".tableresult").tablesorter({
    headers: {
        0: { sorter:'text' }
    }
});

最后,请不要使用$().ready(function(){});作为文档就绪功能。在jQuery的最新版本中,它仍然受支持,但not recommended使用和支持很可能在将来被删除。请改用$(function(){})

答案 1 :(得分:0)

我不是很喜欢tablesorter但是我发现在你的例子中有效的一个简单的解决方法就是总是插入一个隐藏的tr,td并放在顶部的A中:

            <tr style="display:none">
                <td>A</td>                                                                                          
            </tr>      

答案 2 :(得分:0)

嘿,这就是为什么它不起作用的原因&amp; hack-y解决方案。

原因:

因此,表格分类器代码确实可以处理破折号。

https://github.com/jbritten/jquery-tablesorter-filter/commit/378b7ef36e9201df4ec6bd3fb2487e8c9ec9359f

但是我正在阅读该插件并且应该找出为什么这个隐藏的第一个行会解析它

可能的解决方案:

a)它检查至少一个字符以开始解析连字符/破折号( - )如果你知道任何HTML编码可以伪造一个不会出现的字符。 AND 我用下划线(_)尝试了它也可以。我会一直玩,但

b) * 如果 *您可以尝试将此作为第一行,这将是非常棒的 - 在顶部使用一些内容然后在第二行执行空行作为破折号

Working CODE: (In your JSFiddle - change your TBODY to this one and this should work man.

       <tbody>
 <tr style="display:none;">
                    <td>foobar</td>                                                                                          
                </tr>                
                <tr>
                    <td>-</td>                                                                                          
                </tr>
                <tr>
                    <td>B</td>                                               
                </tr>
                <tr>
                    <td>C</td>                                               
                </tr>
            </tbody>

我希望到目前为止这有帮助。

干杯,