2

当我运行一个冗长的 jQuery 操作时,我无法显示光标等待。我尝试的是

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

   //lengthy jQuery sort/DOM manipulation

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

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

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

4

2 回答 2

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');
}
于 2012-10-19T13:45:20.057 回答
3

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

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

于 2012-10-19T13:45:42.577 回答