Как игнорировать th с определенным именем класса в TableSorter? - PullRequest
0 голосов
/ 15 апреля 2011

Я использую сортировщик таблиц для сортировки таблицы, но не все столбцы, я хочу игнорировать определенный столбец с определенным именем класса, например:

<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 ]

3 голосов
/ 15 апреля 2011

Используйте это так:

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

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

Примечание: если у вас есть больше столбцов с этими классами, это будет работать только для первых случаев.

2 голосов
/ 07 февраля 2013

Согласно документации , теперь вы можете использовать class="sorter-false"

1 голос
/ 20 августа 2011

столкнулся с той же проблемой, и вот что я придумал.Предполагая, что ваш 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 });
    });    
}

Это имеет несколько преимуществ по сравнению с другими ответами, которые я видел здесь.Во-первых, это работает, даже если у вас есть несколько несортируемых столбцов.Во-вторых, это также работает, если у вас есть несколько таблиц на одной странице, каждая с разными сортируемыми столбцами.

0 голосов
/ 15 апреля 2011

Просто используйте аргумент заголовков:

$(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
            }
        }  
    });
...