2012-05-05 11 views
0

私はこの質問が既に頼まれていると確信していますが、グーグルとフィードするための良いキーワードを見つけることができません。私は私の質問の良いタイトルを見つけることさえできません。 私はこれをしたい:コードの終わりの前に火災のCSSの変更

$(".selector").click(function() { 
    $(this).css("background-color", "red"); 
    if (confirm("Do you want to do this ?") { 
     // do this 
    } else { 
     $(this).css("background-color", "transparent"); 
    } 
}); 

が、CSSの変更は、私が確認した後にのみ起動されます。確認の前に(または確認中に)どのようにして発射できますか?

ありがとうございました。

答えて

1

遅延を追加するだけの簡単なことです(ほんの0ミリ秒でさえ)。これにより、確認メッセージが表示される前にページが再表示されます。

$(".selector").click(function() { 
    $(this).css("background-color", "red"); 
    var _this = this; 
    function confirmCode(){ 
     if (confirm("Do you want to do this ?") { 
      // do this 
     } else { 
      $(_this).css("background-color", "transparent"); 
     } 
    } 
    setTimeout(function(){confirmCode()}, 0) 
}); 

編集:追加の完全なコード

+0

それは働きます!私はおそらくいくつかのjqueryの魔法を使用して別の関数を必要とせずに解決策を望んでいましたが、これはjavascriptの制限だと思います。実際には、確認メッセージが表示される前に再塗装は必要ありません。私は確認ダイアログの "中"にすることができます。しかし、私が1時間待っても、okをクリックしてコードが終了するまで、それは再描画されません。 – Matthieu

+0

@Matthieuええ、それはCSSと一貫したブラウザのクールなことです。 CSSを変更したダイアログには残念なことにこれが必要です。 –

+0

新しい機能をsetTimeoutに渡す必要はありません。そのように呼び出すことができます:setTimeout(confirmConde、0); – robrich

関連する問題