【问题标题】:Make a jQuery UI close with setTimeout()使用 setTimeout() 关闭 jQuery UI
【发布时间】:2011-12-18 18:50:07
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery html jquery-ui


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你知道吗,不要说我无知,但我不知道 jQuery 函数 delay(),它可以帮助我解决和清理我现在正在处理的这个项目中的许多错误代码。感谢您花时间阅读我的问题!
      【解决方案3】:
      var sT = setTimeout('$(this).dialog("close");', 5000); 
      

      【讨论】:

      • 感谢您的帮助,但实际上 adam rackis 是正确的,但在 settimeout 函数中使用它是错误的。非常感谢您的帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2017-06-26
      • 2012-04-04
      相关资源
      最近更新 更多