使用setTimeout()关闭jQuery UI

时间:2011-12-18 01:18:04

标签: javascript jquery html jquery-ui

我试图让我的jQuery UI对话框在5秒后关闭,但下面的代码没有做任何事情,任何建议?我用alert("hellow")对它进行了测试,但它确实工作正常,但下面的代码无效。

success: function(data) {

 $(data).dialog({

    modal: true,
    width: 900,
    height: 600,
    resizable: false,
    title: thetitle,
    draggable: false,
    open: function(event, ui) {
        setTimeout('$(this).dialog("close");', 5000);                   
  }
}); 

5秒后为什么不关闭我的对话框?它没有做任何事情。

3 个答案:

答案 0 :(得分:6)

您需要传递setTimeout实际函数,而不是字符串。

setTimeout(function() { 
   $(data).dialog("close");
 }, 5000);

当你传递一个字符串时,代码是eval'd,我非常确定将this设置为全局对象(这就是$(this).dialog永远无法工作的原因)。

请注意,this也不会采用上述方式(因为此时this是全局对象),但它仍然被认为比将字符串传递给{更好,更好的形式{1}}。

答案 1 :(得分:1)

jquery .delay()怎么样?

success: function(data) {

 $(data).dialog({

    modal: true,
    width: 900,
    height: 600,
    resizable: false,
    title: thetitle,
    draggable: false,
    open: function(event, ui) {
        $(this).dialog("close").delay(5000);            
  }
}); 

答案 2 :(得分:0)

var sT = setTimeout('$(this).dialog("close");', 5000);