确保jQuery进度对话框至少显示一些最短时间

确保jQuery进度对话框至少显示一些最短时间

问题描述:

我正在使用jQuery UI对话框让用户知道他的请求正在进行,而客户端正在处理一些数据。然而,正如大家都知道的那样,它比firefox处理的时间要长得多。确保进度对话框至少显示一段最短时间的最佳模式是什么,因此它不会在Firefox中闪烁,并且即使定时器到期,对话框也会一直保持,直到浏览器结束处理?确保jQuery进度对话框至少显示一些最短时间

你可以用几种方式解决它,尽管它们本质上都是做一些排队派生的。

例如:

$("#startLink").click(function(){ 
    var $dialog = $(".dialog"); 
    $dialog.dialog({ 
     open: function(e, ui){ 
      // delay any close operations for at least 2 seconds 
      $dialog.queue(function(){ 
       setTimeout(function(){ 
        $dialog.dequeue(); 
       }, 2000); 
      }); 
      // if you're using jQuery 1.4, you can do this instead 
      // $dialog.delay(2000); 
     } 
    }); 

    // do some processing here 

    $dialog.queue(function(){ 
     $dialog.dialog('close'); 
     $dialog.dequeue(); 
    }); 
}); 

无论如何,你要真正做的是确保使用内置的排队系统给定的延迟。你可以在不使用队列系统的情况下完成它,但这是另一个例子。

+0

太棒了,像魅力一样工作。非常感谢。 – Ryan 2010-02-23 21:59:56

+0

很好的答案@BBonifield!很好的使用最佳实践! – 2010-02-23 22:33:47