我在运行冗长的jQuery操作时显示光标等问题。我尝试的是
function foo(){
jQuery('body').css('cursor', 'wait');
//lengthy jQuery sort/DOM manipulation
jQuery('body').css('cursor', 'default');
}
我到目前为止观察到的是,它看起来像onclick
时调用此函数,需要大约6秒(操作排序所需的时间),然后我看到所有的变化结束。这是有意义的,因为我仍然在同一个JQuery调用中,但有没有办法强制光标更改显示等待,然后在排序操作之后,并在完成后将光标更改回默认值。
注意:长度操作不是ajax调用。
答案 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毫秒。足以让浏览器更新光标。