Я видел много сообщений о сортировке, но никто не отвечает на то, что может показаться типичным сценарием.jQuery - сортировка HTML-таблицы
Я пытаюсь сортировать и HTML-таблицу с помощью jQuery, где ссылки, которые я нажимаю для сортировки столбцов, не существуют в той таблице, которая сортируется. Я «подделываю» заголовок таблицы, чтобы выполнить требование прокрутки таблицы.
Что я делаю сейчас -
- нагрузки массив со значениями в столбце, которые должны быть выбранных вместе с рядом идентификаторы
- Сортировки что массив на основе этих значения
- Вставка строки в таблицу HTML на основе индекса из этого отсортированного массива.
Как и ожидалось, это займет около 10 секунд для локального запуска.
Пример кода -
var sortArr = new Array();
$('tr td.' + name).each(function() {
ResidentID = $(this).parent().attr("ResidentID");
BID = $(this).parent().attr("BRecordID");
if ($(this).find('select').length > 0) { //ddls
columnText = $(this).find('select option:selected').text();
sortArr.push({ residentId: ResidentID, bID: BID, text: columnText });
}
else if ($(this).find('input').length > 0) {//Textbox or checkboxes
columnText = $(this).find('input').val();
sortArr.push({ residentId: ResidentID, bID: BID, text: columnText });
}
});
if (sortDirection == 'ascending') {
colHeader.attr('sortorder', 'descending')
sortArr = sortArr.sort(function (v, t) {
return v.text.localeCompare(t.text);
});
}
else {
colHeader.attr('sortorder', 'ascending')
sortArr = sortArr.sort(function (v, t) {
return t.text.localeCompare(v.text);
});
}
for (var i = 0; i < sortArr.length; i++) {
$("[id$=fixedDataTable] > tbody > tr").eq(i).after($("[id$=trFixedDataRow_" + sortArr[i].residentId + "]"));
$("[id$=residentDetailDataTable] > tbody > tr").eq(i).after($("[id$=trResScrollDataRow_" + sortArr[i].residentId + "]"));
$("[id$=bDetailDataTable] > tbody > tr").eq(i).after($("[id$=trBScrollDataRow_" + sortArr[i].bmrID + "]"));
}
Есть ли более быстрый способ для достижения этой цели?
Возможно, мне что-то не хватает, но есть причина, по которой вы не использовали плагин, такой как [tablesorter] (http://tablesorter.com/); в частности, [сортировка по индексу столбца по ссылке за пределами таблицы] (http://tablesorter.com/docs/example-trigger-sort.html), похоже, делает то, что вы хотите – ChrisW
, или вы пробовали [datatables] (http : //datatables.net/)? Он поддерживает сортировку по столбцам, разбивке на страницы, поиск и многое другое. –
@ChrisW - Мне не было известно о том, что tablesorter имеет функциональность для сортировки на основе ссылки за пределами таблицы. – duckmike