0

我有这段代码:

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

但不幸的是 css('color', red) 在调用 confirm() 之前没有执行。如果我使用动画而不是 css,并在回调函数中执行确认(),它会在动画实际完成之前执行。

注意这个问题没有出现在 chrome 中,它工作正常(对我来说)。

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

小超时应该有帮助:

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 回答
0

这在 if 语句中对您有用吗:

同意测试人员的意见——萤火虫太宽容了。

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 回答