JQuery диалоговая таблица вызывает то есть, чтобы заблокировать - PullRequest
1 голос
/ 08 декабря 2010

Я работаю на внутреннем веб-сайте, который использует диалоговое окно jquery. Когда я открываю диалоговое окно, оно использует ajax-loader.gif, когда приложение получает данные с сервера.

В FF это прекрасно работает, конечно, IE борется. Вот код ...

$("#inputDiv5").html('<div style="font-size:100%;height:300px;overflow-y:scroll;"><div id="inputDiv6"><center><img src="/tps/images/ajax-loader.gif" alt="Loading..." /></center></div></div>').dialog({
                title: 'Databanks for ' + $("#PidTitle" + count).text(),
                width: 500,
                modal: true,
                resizable: false,
                open: function() {
                    $.get('content_backend_pub_pid_2_5.ashx', { cmd: 11, pid: x }, function(o) {
                        $("#inputDiv6").html(o);
                        $(".sortablethree th").addClass("sort_header");
                        $(".sortablethree").tablesorter({ widgets: ["zebra"] });
                        $(".sortablethree tr").hover(function() { $(this).addClass("over"); }, function() { $(this).removeClass("over"); });
                    });
                },
                buttons: {
                    'Close': function() { $(this).dialog('close'); }
                }
            });

Возможно, это не самый лучший код, поскольку я впервые использую jquery, так что не смейтесь! Лол! ; -)

Проблема в IE, анимация отображается, но не вращается. FF вращается во время загрузки данных.

Я провел несколько тестов. Я закомментировал код в функции успеха get и анимация работает. Таким образом, похоже, что он замедляется, когда я объявляю таблицу сортировщиком таблиц. Эта таблица возвращает около 1000 строк.

Я добавил анимацию в одиночный абзац в DOM, и эта анимация тоже перестала работать.

Кроме того, при открытии диалогового окна у меня открылся диспетчер задач, и загрузка процессора сильно возросла.

Есть мысли?

1 Ответ

1 голос
/ 08 декабря 2010

Учитывая хорошо известную медлительность / неэффективность движка IE JavaScript, я рискну предположить, что IE просто не может обрабатывать такое количество информации.Так как вы упомянули, что у вас ~ 1000 строк, одним из решений может быть выполнение какой-либо нумерации страниц, чтобы уменьшить объем информации, которая должна обрабатываться одновременно.

Дополнительные предложения: Вы можете заменить свой *Привязки 1003 * и .mouseout() с одной привязкой .hover(), вот так: (см. .hover() doc: http://api.jquery.com/hover/)

$(".sortablethree tr").hover(function() { $(this).addClass("over"); }, function() { $(this).removeClass("over"); });

Это сохранит вас и jQuery дополнительным выбором.

Кроме того, вам не хватает точки с запятой в конце вашего $.get(). Я не думаю, что это строго необходимо, но IE, как известно, задыхается от подобных вещей.

...