我正在尝试使用javascript在我的代码上显示“处理”图像。所以我打算做的是在过程开始时显示处理图像,执行操作并隐藏图像。这只是为了让用户知道系统当前正在做一些事情。
我的代码如下所示。 filters方法在页面上执行一些jquery操作,例如过滤现有数据和重新格式化布局(不涉及网络操作)
$('#divProcessing').show();
filters(_selectedStatusFilter, null);
$('#divProcessing').hide();
但是没有出现处理图像。我尝试在Firefox中使用Firebug进行调试,如果我在$('#divProcessing').hide();
处设置断点,我会看到图像确实出现,但如果我没有任何断点,它似乎不会出现。过滤器方法本身不是很快,并且页面元素有很多东西,所以这可能会消除过程如此之快以至于图像不出现的可能性?
感谢阅读,希望你能找到我的解决方案。
如果我不够清楚,请询问任何问题。
答案 0 :(得分:2)
只要同步JS代码正在运行,文档就不会更新任何更改。
您必须从当前执行上下文中“解耦”长时间运行的代码,以便渲染引擎再次获得控制权并可以更新显示 - 这样做的一种方法是使用setTimeout执行后面的代码:
$('#divProcessing').show();
setTimeout(function() {
filters(_selectedStatusFilter, null);
$('#divProcessing').hide();
}, 10);
答案 1 :(得分:1)
如果您的filters(_selectedStatusFilter, null);
异步执行某些操作(如$ .ajax),则需要在异步方法或自定义事件处理程序的回调函数中调用.hide()
,这样您就可以{{1} }} .trigger()
方法exitinig。