В общем, самая "нативная" сортировка (не без участия jQuery) у меня получилась следующим образом:
Все данные в ячейках я вношу в data-attribute, которые легализованы в HTML5. Чтобы метод sort() работал так, как мне надо -- данные привожу в к нижнему регистру и заменяю кавычки на апострофы, чтобы не возникла конфликта на уровне HTML.
об этом тоже есть порно вопрос
< td data-val="данные 'с кавычками' из ячейки">Данные "с кавычками" из ячейки< /td>
1. Клик по th возвращает мне номер столбца
2. Собираю из td с этим индексом значения в data-val
3. Использую .sort() и .sort().reverse() для создания сортировки по возрастанию и убыванию.
Далее в ход идёт jQuery с чудесным методом detach(), который "вырезает" элемент со страницы, не удаляя данных о нём. И затем этот элемент я вставляю после первой строки, тем самым сортируя табличные данные: $($(sortElem).detach()).insertAfter('table tr:first-child');, где sortElem = $('[data-val="'+массив с данным+'"]').parent()[0]; -- parent возвращает мне весь tr
Ну и всё это, конечно с циклами, чтобы проходиться по массивам.
Получилось, в принципе, достаточно коротко, работает шустро, сортирует относительно правильно. Единственная проблема -- числа сортируются 1, 10, 11, ... 2, 20, 21 и т.д. Но это немного позже прогуглю, как исправить, т.к. в рамках моего проекта пока не очень критично.