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() работает так, как вы ожидаете.

Другие вопросы по тегам