图像不会出现jquery

时间:2013-06-26 10:45:57

标签: jquery

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

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

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

但是没有出现处理图像。我尝试在Firefox中使用Firebug进行调试,如果我在$('#divProcessing').hide();处设置断点,我会看到图像确实出现,但如果我没有任何断点,它似乎不会出现。过滤器方法本身不是很快,并且页面元素有很多东西,所以这可能会消除过程如此之快以至于图像不出现的可能性?

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

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

2 个答案:

答案 0 :(得分:2)

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

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

$('#divProcessing').show();
setTimeout(function() {
  filters(_selectedStatusFilter, null);
  $('#divProcessing').hide();
}, 10);

答案 1 :(得分:1)

如果您的filters(_selectedStatusFilter, null);异步执行某些操作(如$ .ajax),则需要在异步方法或自定义事件处理程序的回调函数中调用.hide(),这样您就可以{{1} }} .trigger()方法exitinig。