Jquery Tablesorter,按链接url排序而不是链接内容

时间:2009-09-22 08:58:13

标签: tablesorter

我在使用第一列(第4列)中的链接的表上使用Tablesorter。问题是在FF和Chrome中,当按网址点击而不是链接内容时,它会对第一列进行排序。例如

<tr><td><a href="http://abc.com">zzz</a></td><td>11</td><td>22</td><td>33</td></tr>
<tr><td><a href="http://cba.com">aaa</a></td><td>11</td><td>22</td><td>33</td></tr>
<tr><td><a href="http://bbb.com">ccc</a></td><td>11</td><td>22</td><td>33</td></tr>

它将订购

zzz
ccc
aaa

而不是按字母顺序排列。这是故意的吗?是否有任何人可以建议的解决方案?

由于

2 个答案:

答案 0 :(得分:8)

我遇到了同样的问题。找到Documentation中的解决方案。需要为链接添加解析器,以便在排序时从列中文本的开头删除<a>标记。

以下是应该解决问题的代码:

 <script type="text/javascript">
    // add parser through the tablesorter addParser method 
    $.tablesorter.addParser({
        // set a unique id 
        id: 'links',
        is: function(s)
        {
            // return false so this parser is not auto detected 
            return false;
        },
        format: function(s)
        {
            // format your data for normalization 
            return s.replace(new RegExp(/<.*?>/),"");
        },
        // set type, either numeric or text
        type: 'text'
    }); 


    // Apply "links" parser to the appropriate column
    $(document).ready(function()
    {
        $("#MyTable").tablesorter({
            headers: {
                0: {
                    sorter: 'links'
                }
            }
    });
</script>

答案 1 :(得分:2)

我通过在链接之前插入带样式display:none的span来修复它。在跨度中放置链接文本。

e.g。

<td><span style="display:none"><%= Html.Encode(item.Name) %></span>
                <a href='<%= Url.Action("Edit", new {id=item.Id}) %>'>
                    <%= Html.Encode(item.Name) %></a>
            </td>