1

我正在尝试使用 javascript 在我的代码上显示“处理”图像。所以我打算做的是在进程开始时显示处理图像,执行操作并隐藏图像。这只是为了让用户知道系统当前正在做一些事情。

我的代码如下所示。filters 方法在页面上执行一些 jquery 操作,例如过滤现有数据和重新格式化布局(不涉及网络操作)

$('#divProcessing').show();
filters(_selectedStatusFilter, null);
$('#divProcessing').hide();

但是没有出现处理图像。我尝试在 Firefox 中使用 Firebug 对其进行调试,如果我坚持一个断点,$('#divProcessing').hide();我会看到图像确实出现了,但如果我没有任何断点,它似乎不会出现。filters 方法本身不是很快,并且对页面元素做了很多事情,所以这可能消除了过程太快以至于图像没有出现的机会?

感谢您的阅读,希望您能找到我的解决方案。

如果我不够清楚,请提出任何问题。

4

2 回答 2

2

只要同步 JS 代码正在运行,文档就不会随着任何更改而更新。

您必须从当前执行上下文中“分离”较长运行的代码,以便渲染引擎再次获得控制权并可以更新显示 - 一种方法是使用 setTimeout 执行后面的代码:

$('#divProcessing').show();
setTimeout(function() {
  filters(_selectedStatusFilter, null);
  $('#divProcessing').hide();
}, 10);
于 2013-06-26T10:53:08.067 回答
1

如果您filters(_selectedStatusFilter, null);以异步方式执行某些操作(例如 $.ajax)调用,则需要调用.hide()异步方法的回调函数或自定义事件事件处理程序,您可以使用.trigger()方法filters()退出。

于 2013-06-26T10:51:52.437 回答