0

私はこのコードを持っています:

$(this).css('color', 'red');
if(confirm('Do you want to delete this item?'))
    window.location.href = link;
else
    $(this).css('color', 'black');

残念ながら、confirm() が呼び出される前に css('color', red) は実行されません。css の代わりに animate を使用し、コールバック関数で confirm() を実行すると、アニメーションが実際に完了する前に実行されます。

この問題はクロムには表示されないことに注意してください。(私にとっては) 正常に動作します。

4

3 に答える 3

1

確認ダイアログは、ページが閉じられるまで更新されないようにする場合があります。これを回避するには、ブラウザーを開く前に、ブラウザーに何かを行う時間を与えます。

var $this = $(this); // in the callback we cannot use `this`
$this.css('color', 'red');
window.setTimeout(function() {
    if(confirm('Do you want to delete this item?'))
        window.location.href = link;
    else
        $this.css('color', 'black');
}, 0);
于 2012-05-19T12:29:18.423 に答える
0

これは if ステートメントで機能しますか:

テスターに​​同意 - firebug は甘すぎる。

var $this = false;
if($this = $(this).css('color', 'red')) {
 if(confirm('Do you want to delete this item?')) {
  window.location.href = link;
 } else {
  $this.css('color', 'black');
 }
}
于 2012-05-19T12:32:50.153 に答える
0

小さなタイムアウトが役立ちます:

var el = $(this);
el.css('color', 'red');
setTimeout(function() {
    if(confirm('Do you want to delete this item?'))
        window.location.href = link;
    else
        el.css('color', 'black');
}, 1);

デモ: http://jsfiddle.net/jWRDq/

于 2012-05-19T12:29:29.200 に答える