У меня есть таблица имен и возрастов, которую я хочу, чтобы пользователь мог сортировать.Когда страница загружается изначально, sortList
перечисляет строки в порядке от самой старой до самой младшей, а затем во вторую очередь от A до Z.
Я хочу то же самое (ВТОРОЙ алфавитный тип), когда пользователь фактически нажимает навозраст <th>
, но sortForce
делает алфавитную сортировку первичной.Есть ли альтернатива?
$('#super_results table').tablesorter({
sortForce: [[0,0]],
sortList: [[1,1],[0,0]]
});
Или я неправильно понимаю sortForce
? Документация здесь.
Обновление: Я не смог найти плагин, чтобы сделать это для меня, поэтому я написал некоторый код, который сортирует многомерный массив, который строит таблицу,Если у вас есть массив с именем tableContents
, а tableContents[0]
- это подмассив имен, а tableContents[1]
- подмассив возрастов, то при вызове tableContents.sort(numSort)
массив будет сначала отсортирован от самого старого к младшему, а затем от A до Z. (num2Sort
сортирует младший по возрасту первым.) Затем вы можете воссоздать таблицу, используя createHtml(data)
, и использовать результат для замены старой таблицы.
function numSort(a, b) {
if (a[1] === b[1]) {
if (a[0] === b[0]) {
return 0;
}
return (a[0] < b[0]) ? -1 : 1;
}
return (a[1] < b[1]) ? 1 : -1;
}
function num2Sort(a, b) {
if (a[1] === b[1]) {
if (a[0] === b[0]) {
return 0;
}
return (a[0] < b[0]) ? -1 : 1;
}
return (a[1] < b[1]) ? -1 : 1;
}
function createHtml(data) {
var completeListLength = MYAPP.completeList.length,
html = '<table>';
html += '<thead>';
html += '<tr>';
html += '<th>names</th>';
html += '<th>ages</th>';
html += '</tr>';
html += '</thead>';
html += '<tbody>';
for (var i = 0; i < completeListLength; i += 1) {
html += '<tr>';
html += '<td>' + data[i][0] + '</td>';
html += '<td>' + data[i][1] + '</td>';
html += '</tr>';
}
html += '</tbody>';
html += '</table>';
return html;
}