jquery Tablesorter — как применить sortAppend к определенному столбцу

#jquery #tablesorter

#jquery #сортировщик таблиц

Вопрос:

Возможно ли вызвать sortAppend к определенному столбцу? Т.Е. — если пользователь выполняет сортировку по столбцу 4, то я хочу, чтобы вторичная сортировка выполнялась в столбце 2; в противном случае я хочу, чтобы вторичная сортировка была в столбце 1..

Я пытался:

     $(element).tablesorter({
    headers: {
        3: {sortAppend:[[1,0]]}
    }   
 

Если я всегда хочу добавлять, это работает правильно..

 $(element).tablesorter({
    sortAppend:[[1,0]]
    }
 

??

Ответ №1:

Вероятно, это не идеальное решение, но оно работает. Этот код не работает с оригинальной версией tablesorter *, но он будет работать с моим форком tablesorter .

Попробуйте этот код (демонстрационный):

 $(function () {
    $('table')
        .tablesorter({
            theme: 'blue',
            widgets: ['zebra', 'columns']
        })
        .on('sortBegin', function(evt, table){
            var c = table.config,
                list = c.sortList;
            // only modify sort if one column was chosen
            if (list.length === 1) {
                // if sorting column 3, add column 2
                // any other column, add column 1 (zero-based indexes)
                list.push( (list[0] amp;amp; list[0][0] !== 3) ? [1, 0] : [2, 0] );
            }
        });
});
 

* причина, по которой он не будет работать с исходным сортировщиком таблиц, заключается в том, что в оригинале нет sortBegin события, которое происходит после sortList обработки. Если вы попытаетесь использовать sortStart событие, оно очистит config.sortList , поэтому все внесенные вами изменения будут потеряны.