@iDrugov
Хуже глупых вопросов только глупые ответы.

Нативная сортировка?

Впервые озадачился вопросом сортировки табличных данных (да и вообще любых данных) и нагуглил множество стареньких статей. Варианты с сортировкой DOMa средствами JS или получение отсортированной таблицы из БД средствами PHP мне понятны в рамках "старых" решений.

Поскольку мне тяжко даётся англоязычная литература, решил спросить тут -- появилось ли в настоящее время что-то ещё, касающееся сортировок и фильтров? Мало ли фишек могли нафаршировать в HTML5 или даже CSS3.

Также, если вдруг есть весьма нативное решение сортировки HTML-таблицы средствами PHP (без подключения к БД), то будет также интересно про него почитать.

----

Сама задача строится на том, что я получу список средствами js (из API) и потому хочу отправить его сразу в таблицу, которую пользователь будет фильтровать и сортировать. Отправлять эту таблицу в БД ради сортировок - звучит, как так себе решение )

Всевозможные библиотеки не интересуют, так как хочется научиться кодить, а не библиотеки подключать.
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
@iDrugov Автор вопроса
Хуже глупых вопросов только глупые ответы.
В общем, самая "нативная" сортировка (не без участия 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 и т.д. Но это немного позже прогуглю, как исправить, т.к. в рамках моего проекта пока не очень критично.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
evgeniy8705
@evgeniy8705
Повелитель вселенной
data.sort(); // сортировка данных
table.render(); // отображение отсортированных данных
Ответ написан
Комментировать
@Froggyweb
Если хочется кодить то ангулар или реакт
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы