Это является хорошей статьей о предмете.
подводя итоги,
прикладная программа, которая выполняется в механизме исполнения, установленном в той же машине. Приложение не может работать без него. Среда выполнения обеспечивает общую библиотеку программных процедур, что программа использует и обычно выполняет управление памятью. Это может также обеспечить своевременное (JIT) преобразование от исходного кода до исполняемого кода или от промежуточного языка до исполняемого кода. Java, Visual Basic и Общеязыковая среда выполнения (CLR).NET являются примерами механизмов исполнения. ( Read больше )
исполняемая программа, которая работает отдельно. Запущенный от операционной системы, программа призывает и использует программные процедуры в операционной системе, но не требует, чтобы другая программная система использовалась. Программы на языке ассемблера, которые были собраны на машинный язык и программы C/C++, скомпилированные на машинный язык для конкретной платформы, являются примерами неуправляемого кода. ( Read больше )
Я перепробовал все, и я должен сделать вывод, что это продукт мозгового перда браузера.
'setTimeout' в мое последнее обновление заставляет браузер выполнять все шаги в правильном порядке. Это отстой, не изящно, но, по крайней мере, работает ...
Обновление: setTimeout необходим, потому что jquery «упрощает» цепочку команд. Если я скажу ему скрыть один элемент и показать его снова, он просто проигнорирует команду, потому что конечный результат будет таким же, как и ничего не делать ...
Я думаю, вы хотите сделать
jQuery("#listadoArticulos tr.r").removeClass("hidden");
внутри функции обратного вызова для показа.
Посмотрите документацию по методу здесь: http://docs.jquery.com/ Эффекты / шоу
Вы можете добиться того же эффекта «мгновенного показа», вызвав show (0);
Но вы хотите выполнить обратный вызов? Хорошо, сделайте следующее:
show(0, function() { jQuery("#listadoArticulos tr.r").removeClass("hidden"); });
Просто! :)
Пробовали ли вы использовать ajaxStart для запуска функции обновления?
Я тоже видел такое поведение, и оно зависит от используемого браузера. IE больше всего пострадал. Причина не в том, что jQuery работает медленно, хотя JavaScript работает медленнее в IE, а в большей степени из-за рендеринга нового HTML. Причина, по которой setTimeout () помогает, заключается в том, что он выполняет первое действие, и только когда браузер завершает рендеринг нового HTML, выполняется вторая часть. Вся операция на самом деле медленнее, но обратная связь делает ее лучше.
Один из способов продемонстрировать это - скрыть длинную таблицу и запустить тот же код. Он будет делать то же самое, но поскольку таблица невидима и не отображает все действие, это происходит намного быстрее.
Есть несколько способов обойти это.
Думаю, работает правильно. Эта операция:
jQuery("#listadoArticulos tr.r").removeClass("hidden");
на самом деле не такая медленная и выполняется за несколько миллисекунд, поэтому вы не видите информацию о загрузке, потому что она присутствует в течение очень короткого времени.
Это не отвечает на исходный вопрос, но можно ли быстрее использовать правило CSS для класса в самой таблице:
#listadoArticulos.hideCertainRows tr.r { display: none }
и переключать отображение следующим образом:
jQuery("#listadoArticulos").addClass("hideCertainRows");
?
{{1 }} По-видимому, вы запускаете асинхронный запрос (да, асинхронный , другими словами, не 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();
});