17.08.2016, 12:48
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Сортировка в подгружаемой таблице
Таблица с данными формируется php-скриптом и аяксом подгружается в другой php-скрипт, который отображает ее на странице. Решил сделать сортировку в таблице при помощи Simple Table Sorter
Столкнулся с тем, что скрипт сортировки не работает, видимо, это связано с тем, что табличка подгружается динамически и изначально как DOM-объект в результирующем файле не существует. Т.к. опыта в javascript катастрофически мало, то самостоятельно разобраться и использовать вариант решения, который предлагается автором скрипта сортировки (по ссылке выше) не удалось. Прошу помощи. Прилагаю свои php-файлы: admin_view_events.php - результирующий файл, admin_logs_req.php - подгружает табличку.
|
|
17.08.2016, 13:18
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
wfire,
загрузили таблицу, нашли таблицу, присвоили класс, запустили плагин для таблицы.
|
|
17.08.2016, 13:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
wfire,
function Hide_Load()
{
$("#loading").fadeOut('slow');
var table = $("#admin_logs table");
if(table.length) {
table.addClass("sortable");
prepTabs(table[0]);
}
};
|
|
17.08.2016, 13:48
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
У него там через ж сделано методом научного самотыка. Таблица подгружается в див с ид "admin_logs", а ТС немедленно создает жабой еще одну пустую таблицу и пытается ее отсортировать.
Короче, надо просто добавить в каждый .load() код инициализации объекта, то есть в конце всей каши дописать - prepTabs($('.sortable'));
А тот код создания пустой таблицы выпилить.
ЗЫ После загрузки новой таблицы последствия prepTabs() должны сдохнуть по идее. То есть после каждой загрузки надо его заново натравливать. Или сделать по-человечески, то есть на страницу выдавать <table>, а подгружать только строки и вставлять их в tbody
Последний раз редактировалось warren buffet, 17.08.2016 в 13:56.
|
|
17.08.2016, 14:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
wfire,
на всякий случай
Сообщение от warren buffet
|
Короче, надо просто добавить в каждый .load() код инициализации объекта, то есть в конце всей каши дописать - prepTabs($('.sortable'));
|
вместо этого читать пост 2 и 3
|
|
17.08.2016, 14:22
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Спасибо большое, буду пробовать, по результату отпишусь.
|
|
17.08.2016, 14:23
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
рони, не надо вместо этого читать 2 и 3. Просто профтыкать функцию с аргументом элементом и все. Потому что: скрипт висит на success (у него там похоже на error ничего нет вообще), таблица приходит безусловно, в атрибуте class уже все написано, то есть ничего кроме вышеуказанного делать не надо, а ты как обычно все пытаешься усложнить и затуманить, чтобы свое реноме шамана племени Мумба-Юмба укрепить. )))
|
|
17.08.2016, 14:29
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
И вообще ТС, сделай сортировку через mysql и тогда не придется загружать всю таблицу, в смысле все строки. Это легко, поскольку майскуль позволяет задавать order по индексу поля. Но придется в заголовки профтыкать ссылки со всеми текущими ключами + ключ на сортировку. Сначала кажется геморрой, а когда один раз сделано - работает как из пушки.
|
|
17.08.2016, 14:40
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Модифицировал функцию Hide_Load() по способу, предложенному рони, но.... не работает.
Визуально табличка не меняется, значит класс "sortable" не применяется.
Модифицированный admin_view_events.php
|
|
17.08.2016, 14:44
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
wfire,
$("#admin_logs").load("models/admin_logs_req.php?uid=" + uid + "&flt=0", Hide_Load());
уберите круглые скобки во всех load
|
|
|
|