调用函数后关闭时,JQuery UI对话框进程缓慢

时间:2015-02-24 06:32:55

标签: javascript jquery

我已经看到了这个类似的closing jquery modal dialog is slow问题,但在此示例中,它不使用buttons属性,这是我的问题。如何在调用函数后不使用$(this).dialog(“close”)关闭对话框?

请参阅此FIDDLE了解演示

 var begin = new Date();
  $(function() { 
    $( "#dialog-confirm" ).dialog({
      resizable: false,
      height:140,
      modal: true,
      buttons: {
        "Delete all items": function() {
         // $( this ).dialog( "close" ); too slow
            foo();
        },
        Cancel: function() {
          $( this ).dialog( "close" );  too slow
            foo();
        }
      }
    });
  });

2 个答案:

答案 0 :(得分:0)

  • 你可以在关闭密码后调用foo();或者更好的可以使用回调函数。

见下面的代码,希望它有所帮助。

 var begin = new Date();
 $(function() {

   $("#dialog-confirm").dialog({
     resizable: false,
     height: 140,
     modal: true,
     buttons: {
       "Delete all items": function() {
         // $( this ).dialog( "close" );
         foo();
       },
       Cancel: function() {
         foo(clsPopUp);


       }
     }
   });
 });

 function clsPopUp() {
   $("#dialog-confirm").dialog("close");
 }

 function foo(callback) {
   var end = new Date();
   alert((end - begin) / 1000);
   callback();
 }
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">

<body>

  <div id="dialog-confirm">
    <p>Are you sure?</p>
  </div>

</body>

答案 1 :(得分:0)

尝试:

$( "#dialog-confirm" ).parent().hide();

而不是:

$( this ).dialog( "close" );