我的网页上有一些非常大的表,我正在使用我编写的一些jquery例程进行过滤。无论如何,当这些表变得非常大并且过滤功能可能需要一些时间才能完成。所以我想我会取消隐藏GIF动画,以便用户得到一些反馈。但是,当我打电话时,gif永远不会出现:
$('#loadingimg').show();
除非我在其前面发出警告声明。我为丑陋的代码道歉,我不是一个经验丰富的jquery / javascript程序员。
function filter()
{
var eles = ["mtmprogram","rate","stage"];
var tag;
var classes='';
$('#loadingimg').show();
//alert('hi');
$('.report').hide();
for (var i in eles)
{
tag = '#' + eles[i] + ' option:selected';
if ($(tag).val())
{
//$('.'+ $(tag).val()).show();
classes = classes + '.' + $(tag).val();
}
}
if (classes == '')
$('tr.report').show();
else
$(classes).show();
filterSubtables('Loan Number');
$('#loadingimg').hide();
}
非常感谢!
答案 0 :(得分:0)
也许你没有给#loadingimg
元素足够的时间来显示。您可以通过在超时时间运行其余代码来测试它:
function filter()
{
var eles = ["mtmprogram","rate","stage"],
classes = '';
$('#loadingimg').show();
//alert('hi');
setTimeout(function () {
$('.report').hide();
for (var i = 0, len = eles.length; i < len; i++)
{
var $tag = $('#' + eles[i] + ' option:selected');
if ($tag.val())
{
//$('.'+ $tag.val()).show();
classes = classes + '.' + $tag.val();
}
}
if (classes == '')
$('.report').show();
else
$(classes).show();
filterSubtables('Loan Number');
$('#loadingimg').hide();
}, 500);
}
请注意,我更改了tag
变量的使用方式(这样可以减少CPU开销,减少jQuery选择并尽可能使用本地变量)。我还将您的循环更改为更好的格式,其执行速度比for ( a in b )
快得多:http://jsperf.com/jquery-each-vs-for-loops/2