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

カーソルが変更されている可能性がありますが、ブラウザはカーソルを再描画できません。タイムアウト関数を使用して長い操作を呼び出してみてください。

つまり、-実行時間の長いコードを最終的に呼び出す関数を記述します。-カーソルを変更するだけの関数を記述します。-カーソルを変更する関数に、タイムアウト付きの長いコードを実行するコードを配置します。タイムアウトは50msまで小さくすることができます。ブラウザにカーソルを更新させるのに十分です。

于 2012-10-19T13:45:42.577 に答える