1
divの "click board"イベントを定義します。クリックすると、ランダムなスドクボードが生成されます。問題は、ボードが生成されている間にdivが点滅するようにしたいのですが、generate_random_board()関数が終了するまで点滅していません。そこにタイムアウト関数を入れて、GUIスレッドが制御と更新を取り戻すようにします。これは、テキスト/ボードの入力を変更するために働きますが、(forループの)フェーディング効果は変更しません。誰がなぜこれが、どのようにそれを解決するか知っていますか?繰り返しますが、 "generate_random_board()"関数が実行されている間にdivを点滅させ、完了したら停止します。ありがとうございました!GUIスレッドがjQueryで正しく更新されない
$('.generate_board').click(function(){ // generate a random board click
$(this).text('Generating Board...');
for(i=0;i<3;i++){
$(this).fadeTo('slow', 0.5).fadeTo('slow', 1.0);
}
$('.board_input').val('');
$('.sudoku_message_box').text('This uses an NP-hard algorithm, so it can take a while...');
window.setTimeout(function(){
generate_random_board();
}, 30);
});
'obj.fadeTo()'に渡される3番目のパラメータはコールバック関数です。この関数は、遷移が完了した後でないと実行されません。なぜなら、このメソッドは成功しているからです。フェードインしている間にフェードアウトすることはできません(行3のフェードアウトで起こっている可能性があります)。 –
私のメソッドは動作します、それはgenerate_random_board()の後まで点滅が始まらないということだけです。私はforループを完全に取り除くことができ、それでも同じことをします。私はあなたのコードを試して、それは同じ待っていることを行います。 : - \ –
あなたはその例をどこかオンラインにしていますか?残りの設定との関連で何が問題になっているのかは分かりません。 –