JQuery each()函数期间的动作指示器

时间:2010-02-09 13:13:05

标签: jquery javascript

如何在执行JQuery each()期间执行简单的动作指示,这可能吗? 我的JQuery代码有些问题,我不明白它的行为:/ 我是JQuery的新手。

js代码如下所示:

$(function () {
     $('#offer_discount').keyup(function () {

           //here i try to show my hidden div with action indicator
           $('#mask').show();

           $('#search-result').find('tr').each(function (index) {
                // do some calc
           });

           // here i try to hide my div with action indicator
           $('#mask').hide();
     });
});

它无法正常工作,隐藏的div显示在计算结束时。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

在运行Javascript代码块时,没有可见的UI更新。在显示更改之前,您必须将控制权返回给浏览器。你可以使用setTimeout调用零时间来执行此操作,以便浏览器绘制更新,然后启动其余代码:

$(function () {
  $('#offer_discount').keyup(function () {

    //here i try to show my hidden div with action indicator
    $('#mask').show();

    window.setTimeout(function() {

       $('#search-result').find('tr').each(function (index) {
            // do some calc
       });

       // here i try to hide my div with action indicator
       $('#mask').hide();

    }, 0);

  });
});