在Safari中的下一个语句之前,css()没有完成

时间:2012-05-19 12:27:40

标签: jquery safari timing

我有这段代码:

$(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)不会执行。如果我使用animate而不是css,并在回调函数中执行confirm(),那么在>动画实际完成之前执行

请注意,此问题不会出现在Chrome中,它可以正常工作(对我而言)。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);

DEMO: http://jsfiddle.net/jWRDq/

答案 2 :(得分: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');
 }
}