如何在tablesorter中忽略具有特定类名的?

时间:2011-04-15 06:09:39

标签: jquery tablesorter

我使用tablesorter对表进行排序,但不是所有列,我想忽略具有已定义类名的特定列,例如:

<table class="basicList" cellpadding="0" cellspacing="0"> 
                    <thead> 
                        <tr> 
                            <th class="ck_field"><input type="checkbox" id="check_all" name="check_all" /></th>
                            <th class="col_filter"><a href="#" class="btn_filter">&nbsp;</a></th>
                            <th>Name <span class="sort_indicator">&nbsp;</span></th> 
                        </tr> 
                        <tr class="filter_row"> 
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                            <td> <input type="text" id="the_name" name="name" class="filter_field"/></td> 
                        </tr>  
                    </thead>
                </table>

在这个例子中,我不想对前两列进行排序。

我试过了:

$(document).ready(function() {

    console.log($(".basicList .col_filter").index());
    console.log($(".basicList .ck_field").index());

    var ck_ignore = $(".basicList .ck_field").index();
    var filter_ignore = $(".basicList .col_filter").index();

    $(".basicList").tablesorter({ widgets: ['zebra'],headers: { 
            //disable the first checkbox cell            
            $ck_ignore: {                
                sorter: false 
            },
            $filter_ignore : {                
                sorter: false 
            }
        }  
    });

哪个不行,怎么解决这个问题?

4 个答案:

答案 0 :(得分:3)

像这样使用:

var myHeaders = {};
myHeaders[ck_ignore] = { sorter: false };
myHeaders[filter_ignore] = { sorter: false };

$(".basicList").tablesorter({ widgets: ['zebra'], headers: myHeaders });

注意:如果您有这些类的更多列,它将仅适用于第一次出现。

答案 1 :(得分:2)

根据documentation,您现在可以使用class="sorter-false"

答案 2 :(得分:1)

遇到同样的问题,这就是我提出的问题。假设您的th类没有排序称为nosort

function setupTablesorter() {
    $('table.tablesorter').each(function (i, e) {
        var myHeaders = {}
        $(this).find('th.nosort').each(function (i, e) {
            myHeaders[$(this).index()] = { sorter: false };
        });

        $(this).tablesorter({ widgets: ['zebra'], headers: myHeaders });
    });    
}

这比我在这里看到的其他答案有一些优势。首先,即使您有多个不可排序的列,它也能正常工作。其次,如果您在同一页面上有多个表,每个表都有不同的可排序列,它仍然有效。

答案 3 :(得分:0)

只需使用headers参数:

$(document).ready(function() {

    console.log($(".basicList .col_filter").index());
    console.log($(".basicList .ck_field").index());

    var ck_ignore = $(".basicList .ck_field").index();
    var filter_ignore = $(".basicList .col_filter").index();

    $(".basicList").tablesorter({ widgets: ['zebra'],headers: {       
             // pass the headers argument and assing a object
        headers: {
            // assign the first column (we start counting zero)
            0: {
                // disable it by setting the property sorter to false 
                sorter: false 
            }
        }
        ,
            $filter_ignore : {                
                sorter: false
            }
        }  
    });