JQuery и таблица сортировки на Firefox 3.5 - PullRequest
1 голос
/ 21 декабря 2011

Я использую JQuery 1.6 и последнюю версию сортировщика таблиц (сортируемую), которую я могу найти.У меня есть одна страница, которая делает

$("div#child_container").load(child_url);

, где страница, на которую ссылается child_url, имеет сортируемую строку.

В FireFox 8 это работает точно так же, какты бы надеялся.У меня есть сортируемая таблица, встроенная в div.

В FireFox 3.5 она не работает.Заголовки столбцов не кликабельны.Это простой текст.Стили зебры не происходит, как и первоначальная сортировка.Запуск FireBug показывает, что он загружает child_url (он загружает таблицу данных, поэтому это подтверждается) и загружает файл sorttable.js.Там нет ошибок.Любые предупреждения связаны с CSS.

Я могу загрузить child_url в FireFox 3.5, и он будет работать точно так, как вы ожидаете, так что это не проблема сортировщика таблиц как таковая.Кажется, проблема с выполнением JQuery .load () для включения страницы, которая использует TableSorter.

Я открыт для предложений о том, как продолжить.Кроме того, чтобы просто сказать «Извините, но ваш браузер слишком стар и сломан».

Редактировать: я перешел на jquery.tablesorter.js.Та же проблема.

Редактировать: я изменил свою страницу child_url, чтобы она не предоставляла тип документа, заголовок и т. Д. Он просто предоставил блок <table> и <script>, который будет вызывать $("#tablediv").tablesorter( ... ) в теме.Я повысил загрузку файла .js на родительскую страницу.Что плохо себя ведет, идентично, на 3,5 и 8,0.У меня была ошибка javascript при вызове .tablesorter(), чего у меня никогда раньше не было.

1 Ответ

0 голосов
/ 23 декабря 2011

Прежде всего, если есть какой-то способ кредитовать Альфабраво, я бы так и сделал. Хотя его комментарий не решил проблему полностью, он поставил меня на правильный путь.

Я удалил страницу child_url, чтобы она ТОЛЬКО предоставила <table>. Я потянул jquery.tablesorter.js на родительскую страницу. Мне нужно, чтобы родительская страница выполнила .tablesorter() в таблице.

$("div#pending").load(
    "pending.jsp", 
    function() {
        $("table#pending_records").tablesorter( {
            sortList: [[4, 0]],
            widgets: ["zebra"]
        } );
    } 
);

JQuery.load() позволяет указать URL-адрес для загрузки и обратный вызов для выполнения, когда он полностью загружен. Это был секретный соус, необходимый для преодоления ошибки Javascript, упомянутой в моем втором редактировании.

На другом замечании: я загружал две таблицы сортировки на двух разных вкладках, используя jquery.ui.tabs.js. Вторая вкладка тоже не вела себя. Это потому, что sorttable не работает, если он находится в блоке, который display: none. Когда страница загружена:

  • содержимое первой вкладки было видно, поэтому содержимое отображалось правильно
  • содержимое второй вкладки было скрыто, поэтому оно загружало содержимое, но .sorttable() не выполнялось, поэтому оно не отображалось должным образом

Мне удалось использовать хак, упомянутый на странице документа JQuery.load(), чтобы обойти это. В основном, настройте таблицу стилей так, чтобы вместо:

.ui-tabs .ui-tabs-hide { display: none; }

имеет:

.ui-tabs .ui-tabs-hide { position: absolute; left: -10000px; }

Поскольку фрейм, содержащий содержимое, «отображается» (хотя и за пределами экрана), .sorttable() работает так, как вы ожидаете.

...