2011-12-18 46 views
4

我想让我的jQuery UI对话框在5秒后关闭,但下面的代码不会做任何事情,有什么建议吗?我用alert("hellow")测试了它,它确实工作正常,但下面的代码不起作用。使用setTimeout关闭jQuery UI()

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秒后关闭我的对话框?它什么都不做。

回答

6

你会想通过setTimeout一个实际的功能,而不是一个字符串。

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

当你传递一个字符串,代码eval“d,我敢肯定套this全局对象(这就是为什么$(this).dialog永远不会成功)。

注意this不会与上述方式是(因为再次this是该点的全局对象),但它仍然被认为是好得多形式大于传递一个字符串setTimeout

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

感谢您的帮助,但实际上亚当rackis是正确的,但在settimeout函数内使用这个错误。非常感谢您的帮助 – 2011-12-18 01:29:59

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);    
    } 
}); 
+0

你知道吗,不要称我为无知,但我不知道jQuery函数delay(),它可以帮助我解决和清理我正在处理的这个项目中的很多错误代码。感谢您花时间阅读我的问题! – 2011-12-20 07:03:48