Javascript 使用setTimeout()关闭jQuery UI

Javascript 使用setTimeout()关闭jQuery UI,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,我试图在5秒钟后关闭我的jQuery UI对话框,但是下面的代码没有任何作用,有什么建议吗?我用alert(“hellow”)对它进行了测试,它确实工作得很好,但下面的代码不起作用 success: function(data) { $(data).dialog({ modal: true, width: 900, height: 600, resizable: false, title: thetitle, draggable: false

我试图在5秒钟后关闭我的jQuery UI对话框,但是下面的代码没有任何作用,有什么建议吗?我用
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秒后我的对话框还没有关闭?它什么也不做。

您需要传递一个实际的函数,而不是字符串

setTimeout(function() { 
   $(data).dialog("close");
 }, 5000);
当你传递一个字符串时,代码是
eval
'd,我很确定它会将
this
设置为全局对象(这就是为什么
$(this)。对话框
永远不会工作)

请注意,
也不会使用上述方法(因为此时此再次是全局对象),但它仍然被认为是比将字符串传递给
setTimeout

好得多的形式,jquery.delay()呢

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

感谢您的帮助,但实际上adam rackis是正确的,但在settimeout函数中使用此函数是错误的。非常感谢你的帮助,你知道吗,不要说我是一个无知的人,但我不知道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);            
  }
});