在运行冗长的JQuery操作时将游标更改为等待

时间:2012-10-19 13:40:48

标签: jquery

我在运行冗长的jQuery操作时显示光标等问题。我尝试的是

function foo(){
   jQuery('body').css('cursor', 'wait');

   //lengthy jQuery sort/DOM manipulation

   jQuery('body').css('cursor', 'default');
}

我到目前为止观察到的是,它看起来像onclick时调用此函数,需要大约6秒(操作排序所需的时间),然后我看到所有的变化结束。这是有意义的,因为我仍然在同一个JQuery调用中,但有没有办法强制光标更改显示等待,然后在排序操作之后,并在完成后将光标更改回默认值。

注意:长度操作不是ajax调用。

2 个答案:

答案 0 :(得分:4)

这看起来不错,但问题是你的浏览器在开始运行foo时会“冻结”并在结束时解冻,所以你不会注意到光标的变化......

尝试类似于你所拥有的东西但使用超时...

function foo(){
   jQuery('body').css('cursor', 'wait');
   window.setTimeout(someLengthy,1);
}

function someLength(){
   //lengthy jQuery sort/DOM manipulation
   jQuery('body').css('cursor', 'default');
}

答案 1 :(得分:3)

可能是光标已更改但浏览器无法重绘。尝试使用超时函数调用长操作。

即。 - 编写一个最终将调用长时间运行代码的函数。 - 编写一个只会改变光标的函数 - 在您要更改光标的函数中输入代码以使用超时运行长代码。超时可以小到50毫秒。足以让浏览器更新光标。