шоу jQuery, “загружающееся” во время медленной операции

Это является хорошей статьей о предмете.

подводя итоги,

  1. Управляемый код не компилируется в машинный код, но в промежуточный язык, который интерпретируется и выполняется некоторым сервисом на машину и поэтому работает в (надо надеяться!) защищают платформу, которая обрабатывает опасные вещи как память и потоки для Вас. В современном использовании это часто означает.NET, но не имеет к.

прикладная программа, которая выполняется в механизме исполнения, установленном в той же машине. Приложение не может работать без него. Среда выполнения обеспечивает общую библиотеку программных процедур, что программа использует и обычно выполняет управление памятью. Это может также обеспечить своевременное (JIT) преобразование от исходного кода до исполняемого кода или от промежуточного языка до исполняемого кода. Java, Visual Basic и Общеязыковая среда выполнения (CLR).NET являются примерами механизмов исполнения. ( Read больше )

  1. Неуправляемый код скомпилирован в машинный код и поэтому выполнен ОС непосредственно. Это поэтому имеет способность сделать разрушительные/мощные вещи, которые не делает Управляемый код. Это - то, как все раньше работало, так обычно это связано со старым материалом как .dlls.

исполняемая программа, которая работает отдельно. Запущенный от операционной системы, программа призывает и использует программные процедуры в операционной системе, но не требует, чтобы другая программная система использовалась. Программы на языке ассемблера, которые были собраны на машинный язык и программы C/C++, скомпилированные на машинный язык для конкретной платформы, являются примерами неуправляемого кода. ( Read больше )

  1. Собственный компонент код часто синонимичен с Неуправляемым, но не идентичен.

7
задан The Disintegrator 10 May 2010 в 07:07
поделиться

8 ответов

Я перепробовал все, и я должен сделать вывод, что это продукт мозгового перда браузера.

  1. jQuery сообщает браузеру показать / скрыть загрузочный div
  2. jQuery сообщает браузеру, что добавить / удалить скрытый класс из строк
  3. jQuery сообщает браузеру показать / скрыть загрузочный div
  4. Браузер выполняет все вышеперечисленные шаги в неправильном порядке (2 на первом месте)

'setTimeout' в мое последнее обновление заставляет браузер выполнять все шаги в правильном порядке. Это отстой, не изящно, но, по крайней мере, работает ...

Обновление: setTimeout необходим, потому что jquery «упрощает» цепочку команд. Если я скажу ему скрыть один элемент и показать его снова, он просто проигнорирует команду, потому что конечный результат будет таким же, как и ничего не делать ...

3
ответ дан 7 December 2019 в 03:18
поделиться

Я думаю, вы хотите сделать

jQuery("#listadoArticulos tr.r").removeClass("hidden");

внутри функции обратного вызова для показа.

Посмотрите документацию по методу здесь: http://docs.jquery.com/ Эффекты / шоу

Вы можете добиться того же эффекта «мгновенного показа», вызвав show (0);

Но вы хотите выполнить обратный вызов? Хорошо, сделайте следующее:

show(0, function() { jQuery("#listadoArticulos tr.r").removeClass("hidden"); });

Просто! :)

1
ответ дан 7 December 2019 в 03:18
поделиться

Пробовали ли вы использовать ajaxStart для запуска функции обновления?

0
ответ дан 7 December 2019 в 03:18
поделиться

Я тоже видел такое поведение, и оно зависит от используемого браузера. IE больше всего пострадал. Причина не в том, что jQuery работает медленно, хотя JavaScript работает медленнее в IE, а в большей степени из-за рендеринга нового HTML. Причина, по которой setTimeout () помогает, заключается в том, что он выполняет первое действие, и только когда браузер завершает рендеринг нового HTML, выполняется вторая часть. Вся операция на самом деле медленнее, но обратная связь делает ее лучше.

Один из способов продемонстрировать это - скрыть длинную таблицу и запустить тот же код. Он будет делать то же самое, но поскольку таблица невидима и не отображает все действие, это происходит намного быстрее.

Есть несколько способов обойти это.

  1. Попытайтесь избежать таблиц и выберите макет DIV вместо. Таблицы отображаются медленно, и в зависимости от браузера таблица может только стать видимой, а затем полностью отображаться.
  2. Если вы должны использовать таблицу, рассмотрите возможность использования нескольких таблиц, например, из 100 строк, склеенных вместе. Таким образом, страница начнет отображаться, как только первая таблица будет переформатирована.
  3. Если одна большая таблица - единственный путь, и вы знаете, что пользователь может видеть только верхние строки, вы можете выполнить действие дважды, в первый раз в верхних рядах и второй раз во всех рядах. Это самое медленное и наименее оптимальное решение, но его очень легко реализовать, добавив к действию фильтр jQuery.
0
ответ дан 7 December 2019 в 03:18
поделиться

Думаю, работает правильно. Эта операция:

jQuery("#listadoArticulos tr.r").removeClass("hidden");

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

0
ответ дан 7 December 2019 в 03:18
поделиться

Это не отвечает на исходный вопрос, но можно ли быстрее использовать правило CSS для класса в самой таблице:

#listadoArticulos.hideCertainRows tr.r { display: none }

и переключать отображение следующим образом:

jQuery("#listadoArticulos").addClass("hideCertainRows");

?

{{1 }}
0
ответ дан 7 December 2019 в 03:18
поделиться

По-видимому, вы запускаете асинхронный запрос (да, асинхронный , другими словами, не t работать синхронно с кодом!) во время «длительного процесса». Вам необходимо вызвать $ ('# loading'). Hide () в конце функции обратного вызова асинхронного запроса.

Вот отличный пример:

$('#loading').show();
$.getJSON('someURL', function(data) {
    // Do slow processing.
});
$('#loading').hide();

Очевидно, это не сработает. Он покажет, запустит асинхронный запрос, а затем сразу скроется. Вам нужно переписать код как:

$('#loading').show();
$.getJSON('someURL', function(data) {
    // Do slow processing.
    $('#loading').hide();
});
3
ответ дан 7 December 2019 в 03:18
поделиться

Просто примечание - я разработал плагин для создания оверлея div с загружаемой графикой.

1
ответ дан 7 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: