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

运行冗长的JQuery操作时,将游标更改为等待,jquery,Jquery,运行冗长的jQuery操作时,我在显示光标等待时遇到问题。我尝试的是 function foo(){ jQuery('body').css('cursor', 'wait'); //lengthy jQuery sort/DOM manipulation jQuery('body').css('cursor', 'default'); } 到目前为止,我观察到的情况是,在我看来,当单击onclick,调用此函数时,大约需要6秒钟(操作排序所需的时间),然后我在最后看到所有

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

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

   //lengthy jQuery sort/DOM manipulation

   jQuery('body').css('cursor', 'default');
}
到目前为止,我观察到的情况是,在我看来,当单击
onclick
,调用此函数时,大约需要6秒钟(操作排序所需的时间),然后我在最后看到所有更改。这是有意义的,因为我仍然在同一个JQuery调用中,但是有没有一种方法可以强制光标更改为show to wait,然后在排序操作之后,将光标更改回默认值


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

这看起来不错,但问题是,当开始运行foo时,浏览器会“冻结”,最后会解冻,因此您不会注意到光标的变化

尝试类似于您拥有的功能,但使用超时

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

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

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

i、 e。 -编写一个函数,最终调用长时间运行的代码。 -编写一个只改变光标的函数
-在更改光标的函数中放入运行带超时的长代码的代码。超时时间可以小到50毫秒。刚好可以让浏览器更新光标。

另一方面,根据您的DOM操作,concider从DOM中删除父节点,执行manips并将其放回DOM中。这将增加处理时间,因为浏览器不必在每次修改时“重新绘制”。以下是我对一个关于缓慢的DOM manip的问题的回答。这些答案对你有帮助吗?或者你还有其他需要澄清的地方吗?@Salketer:嗨,很抱歉我有回复,但我的其他工作有点忙,我今晚会测试一下,明天再回答。抱歉耽搁了(我通常不会这么晚回复)