无法通过setTimeout关闭动态创建的jquery UI对话框

时间:2016-08-25 08:40:52

标签: jquery jquery-ui

我正在像这样动态创建一个jquery UI对话框

$('.panel-body').append
('<div style=\'display:none\' id=\'dialog\' title=\'Message\'><p>' + $scope.successMessage + '</p></div>');

在下一行中,我添加了一些关闭以自动关闭对话框。

$( "#dialog" ).dialog(
      {
          open: function(event, ui) 
          {
              setTimeout(function()
              {
                  alert(1);
                  $('#dialog').dialog('close'); 
              }, 3000
              );
          }
      });

但是,我收到此错误消息。

在初始化之前无法调用对话框上的方法;试图调用方法'关闭'

我想这是因为我的对话框是动态的,但我无法解决问题。

1 个答案:

答案 0 :(得分:0)

jQuery UI Dialog表现得有些奇怪......这很有效(如果你欣赏的话请相信)

如果要使用按钮或事件打开对话框,可以封装open&amp;超时调用该按钮或事件动作。

&#13;
&#13;
//Needs jquery UI as well
$scope={successMessage:"hi"};

$('body').append
('<div style=\'display:none\' id=\'dialog\' title=\'Message\'><p>' + $scope.successMessage + '</p></div>');

$(function(){
$( "#dialog" ).dialog({autoOpen:true});
                  


             setTimeout(function()
              {
                  //alert(1);
                  $("#dialog").dialog("close") ; 
              }, 3000
              );
         
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.js"></script>
&#13;
&#13;
&#13;