JQuery tablesorter плагин вторичная "скрытая" сортировка
Я использую плагин jQuery tablesorter, и у меня есть столбец, который содержит название месяца и года, как этот
April, 1975
January, 2001
Я хотел бы отсортировать этот столбец, как если бы это был столбец даты. Насколько я понимаю, можно отсортировать столбец с некоторым другим "скрытым" значением, но я просто не могу найти документацию для этой функции. Любая помощь там?
Обновление
У этого fork http://mottie.github.com/tablesorter/docs/index.html табличное устройство было то, что мне нужно; способность сохранять значение для сортировки по атрибуту, отлично работала.
Ответы
Ответ 1
У меня есть вилка tablesorter, которая позволяет вам написать парсер, который может извлечь атрибуты данных из ячейки таблицы, а также назначить конкретную textExtraction для каждого столбца.
$(function(){
$.tablesorter.addParser({
// set a unique id
id: 'myParser',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s, table, cell, cellIndex) {
// get data attributes from $(cell).attr('data-something');
// check specific column using cellIndex
return $(cell).attr('data-something');
},
// set type, either numeric or text
type: 'text'
});
$('table').tablesorter({
headers : {
0 : { sorter: 'myParser' }
}
});
});
Ответ 2
Просто используя функцию textExtraction. Задайте значение сортировки данных для ваших TD. По умолчанию используется нормальный текст, если он отсутствует.
$(".sort-table").tablesorter({
textExtraction: function(node) {
var attr = $(node).attr('data-sort-value');
if (typeof attr !== 'undefined' && attr !== false) {
return attr;
}
return $(node).text();
}
});
Ответ 3
Извините за ответ на старый вопрос, но теперь это СТАНДАРТНАЯ ФУНКЦИЯ tablesorter, хотя по какой-то причине она не документирована. Если вы откроете файл https://github.com/christianbach/tablesorter/blob/master/jquery.tablesorter.js и посмотрите на строку # 307, вы увидите, что он поддерживает атрибут "data-sort-value".
Использование:
<td data-sort-value="42">Answer to the question</td>
Ответ 4
Это немного взломать (хорошо, это общий взлом), но если вы установите синтаксический анализатор для столбца на "текст" и предварительно исправьте свой симпатичный вывод с помощью строки, которую вы действительно хотите отсортировать в пределах он будет сортировать правильно.
Вы можете установить синтаксический анализатор в столбце с опцией headers
, например. для установки синтаксического анализатора на первом и втором столбцах на "текст" вы должны установить следующее:
headers: {0: {sorter: 'text'}, : {sorter: 'text'}
Чтобы сделать этот трюк с датами, вы можете использовать формат даты ISO8601, который сортирует лексически. Объекты JS Date
могут генерировать строки даты ISO8601 с помощью функции toISOString()
.
Учитывая CSS:
span.hidden{
display:none;
}
Образец ячейки в таблице будет выглядеть так:
<td><span class="hidden">2015-04-18T23:48:33</span>19 April 2015</td>
Не самый красивый код в мире, но он работает.
Ответ 5
Вам нужно написать собственный парсер. Ваш анализатор может выглядеть примерно так:
var months = {'January':1,'February':2, ...};
$.tablesorter.addParser({
id: 'myDate',
is: function(s) { return false; },
format: function(s) {
var x = s.split(', ');
return x[1]+'-'+months[x[2]];
},
type: 'numeric'
});
Не тестировалась, но общая идея.
Ответ 6
Я использую
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.29.0/js/jquery.tablesorter.min.js"></script>
Работа с текстом
<td data-text="42">Answer to the question</td>
Не работает со значением сортировки данных
<td data-sort-value="42">Answer to the question</td>