JQuery и таблица сортировки на Firefox 3.5
Я использую 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 ответ
Прежде всего, если есть какой-то способ кредитовать Альфабраво, я бы так и сделал. Хотя его комментарий не решил проблему полностью, он поставил меня на правильный путь.
Я раздели 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()
работает так, как вы ожидаете.