Поиск столбца и применение пользовательского парсера - PullRequest
0 голосов
/ 07 марта 2011

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

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

РЕДАКТИРОВАТЬ, сейчас я использую его вот так (иногда сортировщик "четверти" может быть с другим индексом, поэтому мне нужен код для его автоматического определения)

$("table").tablesorter({
                headers: {
                    0: { sorter: false },
                    1: { sorter: false },
                    5: { sorter: "quarters" }
                }
            });

И мой пользовательский парсер:

$.tablesorter.addParser({
        id: 'quarters',
        is: function (s) {
            return false;
        },
        format: function (s) {
            var match = s.match(/(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20\d\d)/);
            if (match)
            {
               return match[3] * 1000 - match[2] * 100 - match[1] * 10;                
            }
            else return 0;
        },
        type: 'text'
    });

Ответы [ 2 ]

1 голос
/ 09 марта 2011

Если на th есть какой-то селектор, к которому вы хотите применить сортировщик quarters, то вы можете использовать jQuery, чтобы выбрать этот заголовок, а затем использовать prevUtil, чтобы получить все родственные элементы th дои используйте этот размер, чтобы определить индекс столбца, который вы хотите.

В моем примере предполагается, что у вашего столбца есть id из quarters:

var headerPosition = $("#quarters").prevUntil().size());
var headers = {};

headers[headerPosition] = "quarters";

$("table").tablesorter({
    headers: headers
});

Вот jsfiddle с ним:

http://jsfiddle.net/magicaj/7A3ZF/1/

0 голосов
/ 09 марта 2011

Вы можете использовать эту маленькую функцию для поиска в индексе заголовка, где вы хотите использовать синтаксический анализатор сортировки:

function get_index_by_text($list, text){
    var searched = -1;
    $list.each(function(index){
        if ($(this).text() == text) {
            searched = index;
            return(false);
        }
    });
    return(searched);
}

var quarters_index = get_index_by_text($("table thead th"), "quarters");

Просто позаботьтесь и проверьте, найден ли текст, если это не так, функция вернет -1.

...