Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сортировка в подгружаемой таблице (https://javascript.ru/forum/dom-window/64520-sortirovka-v-podgruzhaemojj-tablice.html)

wfire 17.08.2016 12:48

Сортировка в подгружаемой таблице
 
Таблица с данными формируется php-скриптом и аяксом подгружается в другой php-скрипт, который отображает ее на странице. Решил сделать сортировку в таблице при помощи Simple Table Sorter
Столкнулся с тем, что скрипт сортировки не работает, видимо, это связано с тем, что табличка подгружается динамически и изначально как DOM-объект в результирующем файле не существует. Т.к. опыта в javascript катастрофически мало, то самостоятельно разобраться и использовать вариант решения, который предлагается автором скрипта сортировки (по ссылке выше) не удалось. Прошу помощи. Прилагаю свои php-файлы: admin_view_events.php - результирующий файл, admin_logs_req.php - подгружает табличку.

рони 17.08.2016 13:18

wfire,
загрузили таблицу, нашли таблицу, присвоили класс, запустили плагин для таблицы.

рони 17.08.2016 13:22

wfire,
function Hide_Load()
 {
    $("#loading").fadeOut('slow');
    var table = $("#admin_logs table");
    if(table.length) {
       table.addClass("sortable");
       prepTabs(table[0]);
    }

 };

warren buffet 17.08.2016 13:48

У него там через ж сделано методом научного самотыка. Таблица подгружается в див с ид "admin_logs", а ТС немедленно создает жабой еще одну пустую таблицу и пытается ее отсортировать.

Короче, надо просто добавить в каждый .load() код инициализации объекта, то есть в конце всей каши дописать - prepTabs($('.sortable'));

А тот код создания пустой таблицы выпилить.

ЗЫ После загрузки новой таблицы последствия prepTabs() должны сдохнуть по идее. То есть после каждой загрузки надо его заново натравливать. Или сделать по-человечески, то есть на страницу выдавать <table>, а подгружать только строки и вставлять их в tbody

рони 17.08.2016 14:00

wfire,
на всякий случай
Цитата:

Сообщение от warren buffet
Короче, надо просто добавить в каждый .load() код инициализации объекта, то есть в конце всей каши дописать - prepTabs($('.sortable'));

вместо этого читать пост 2 и 3

wfire 17.08.2016 14:22

Спасибо большое, буду пробовать, по результату отпишусь.:yes:

warren buffet 17.08.2016 14:23

рони, не надо вместо этого читать 2 и 3. Просто профтыкать функцию с аргументом элементом и все. Потому что: скрипт висит на success (у него там похоже на error ничего нет вообще), таблица приходит безусловно, в атрибуте class уже все написано, то есть ничего кроме вышеуказанного делать не надо, а ты как обычно все пытаешься усложнить и затуманить, чтобы свое реноме шамана племени Мумба-Юмба укрепить. )))

warren buffet 17.08.2016 14:29

И вообще ТС, сделай сортировку через mysql и тогда не придется загружать всю таблицу, в смысле все строки. Это легко, поскольку майскуль позволяет задавать order по индексу поля. Но придется в заголовки профтыкать ссылки со всеми текущими ключами + ключ на сортировку. Сначала кажется геморрой, а когда один раз сделано - работает как из пушки.

wfire 17.08.2016 14:40

Модифицировал функцию Hide_Load() по способу, предложенному рони, но.... не работает.
Визуально табличка не меняется, значит класс "sortable" не применяется.
Модифицированный admin_view_events.php

рони 17.08.2016 14:44

wfire,
$("#admin_logs").load("models/admin_logs_req.php?uid=" + uid + "&flt=0", Hide_Load());
уберите круглые скобки во всех load


Часовой пояс GMT +3, время: 02:10.