Попробуйте использовать обратный вызов "complete" метода show, js в основном основан на асинхронных событиях, и это три строки:
jQuery("#loading").show(); //not showing
jQuery("#listadoArticulos tr.r").removeClass("hidden");
jQuery("#loading").hide();
будут выполняться без ожидания, поэтому ваше показ, добавление класса и немедленное скрытие div, поэтому вы не можете видеть div, вы скрываете его без ожидания, чтобы его показать, и оно действительно появляется и исчезает быстрый, или даже он может никогда не появиться (не знаю ни о какой оптимизации этого типа).
Если вы добавите два последних в полные обратные вызовы, это будет работать, больше http://api.jquery.com/show/:
jQuery("#loading").show(400, function (){
jQuery("#listadoArticulos tr.r").removeClass("hidden");
jQuery("#loading").hide();
});
В любом случае, также, правильный способ сделать это для ajax-запроса (я думаю, это будет полезно для кого-то) - это использовать ajaxStart и ajaxStop , например так:
$(document).ajaxStart(function() {
$( "#loading" ).show();
}).ajaxStop(function() {
$( "#loading" ).hide();
});
Добавление для removeClass отсутствия обратного вызова:
Возможно, ваша проблема заключалась в том, что для removeClass нет обратного вызова, но вы можете сделать следующее:
jQuery("#loading").show(400, function (){
var els = jQuery("#listadoArticulos tr.r");
els.each(function(i, el) {
el.removeClass("hidden");
if (els.length == i +1) jQuery("#loading").hide();
});
});
попробуйте это тоже:
var els = jQuery("#listadoArticulos tr.r");
els.each(function(i, el) {
if (i == 0) jQuery("#loading").show();
el.removeClass("hidden");
if (els.length == i +1) jQuery("#loading").hide();
});
Вы можете добавить проблему, что если у вас есть изображения или любой дополнительный код, который активируется после удаления класса, нет никакого собственного способа ждать, пока они скрывают загрузочный div, так что, возможно, даже если вы удалите скрытый там класс не легко ждать, пока объекты будут видны.
Я просто заметил, что это было 2 года назад, может быть, вам это больше не нужно.