Сортировка в подгружаемой таблице
Таблица с данными формируется php-скриптом и аяксом подгружается в другой php-скрипт, который отображает ее на странице. Решил сделать сортировку в таблице при помощи Simple Table Sorter
Столкнулся с тем, что скрипт сортировки не работает, видимо, это связано с тем, что табличка подгружается динамически и изначально как DOM-объект в результирующем файле не существует. Т.к. опыта в javascript катастрофически мало, то самостоятельно разобраться и использовать вариант решения, который предлагается автором скрипта сортировки (по ссылке выше) не удалось. Прошу помощи. Прилагаю свои php-файлы: admin_view_events.php - результирующий файл, admin_logs_req.php - подгружает табличку. |
wfire,
загрузили таблицу, нашли таблицу, присвоили класс, запустили плагин для таблицы. |
wfire,
function Hide_Load() { $("#loading").fadeOut('slow'); var table = $("#admin_logs table"); if(table.length) { table.addClass("sortable"); prepTabs(table[0]); } }; |
У него там через ж сделано методом научного самотыка. Таблица подгружается в див с ид "admin_logs", а ТС немедленно создает жабой еще одну пустую таблицу и пытается ее отсортировать.
Короче, надо просто добавить в каждый .load() код инициализации объекта, то есть в конце всей каши дописать - prepTabs($('.sortable')); А тот код создания пустой таблицы выпилить. ЗЫ После загрузки новой таблицы последствия prepTabs() должны сдохнуть по идее. То есть после каждой загрузки надо его заново натравливать. Или сделать по-человечески, то есть на страницу выдавать <table>, а подгружать только строки и вставлять их в tbody |
wfire,
на всякий случай Цитата:
|
Спасибо большое, буду пробовать, по результату отпишусь.:yes:
|
рони, не надо вместо этого читать 2 и 3. Просто профтыкать функцию с аргументом элементом и все. Потому что: скрипт висит на success (у него там похоже на error ничего нет вообще), таблица приходит безусловно, в атрибуте class уже все написано, то есть ничего кроме вышеуказанного делать не надо, а ты как обычно все пытаешься усложнить и затуманить, чтобы свое реноме шамана племени Мумба-Юмба укрепить. )))
|
И вообще ТС, сделай сортировку через mysql и тогда не придется загружать всю таблицу, в смысле все строки. Это легко, поскольку майскуль позволяет задавать order по индексу поля. Но придется в заголовки профтыкать ссылки со всеми текущими ключами + ключ на сортировку. Сначала кажется геморрой, а когда один раз сделано - работает как из пушки.
|
Модифицировал функцию Hide_Load() по способу, предложенному рони, но.... не работает.
Визуально табличка не меняется, значит класс "sortable" не применяется. Модифицированный admin_view_events.php |
wfire,
$("#admin_logs").load("models/admin_logs_req.php?uid=" + uid + "&flt=0", Hide_Load()); уберите круглые скобки во всех load |
Да, заработало, спасибо!
Насчет сортировки sql-запросом - попробую и этот вариант тоже. |
Цитата:
Я думал это самопал, оказывается жикверный самопал. Ну значит его this в калбеке должен быть тем самым элементом. Ладно, здесь все равно стиль "лишь бы заработало". |
Самопал-самопал. А что значит "жикверный"?:)
|
То и значит, что в жанре jquery принято по 100500 раз прописывать одни и те же строки идентификаторов, иначе вся красота облетит как старые шинглы с сарая.
|
Кроме того у тебя раздвоение на первичную и вторичную загрузки. Так вот первичную можно выдать сразу, если тупо воткнуть второй хтмл в первый между <div id="admin_log"><?php include 'admin_logs_req.php'; ?></div>
ЗЫ судя по обилию require'сов ты юзаешь скрипт девятьсот-ломхатого года без точки входа. ))) |
Понятно... Что такое шинглы, спрашивать, пожалуй, не буду:lol:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
wfire, и больше чем необходимо тебе хотеть нельзя, поэтому когда захотелось сортировки, ты нашел костыль для жабы. И так будет повторяться со всеми остальными хотелками.
Метод "лишь бы работало" только кажется безобидным и поначалу. Впоследствии он будет иметь своего творца столько раз, сколько пожелает и при каждом случае. ))) |
Цитата:
|
Да... реально пичалька
|
Часовой пояс GMT +3, время: 04:31. |