为什么jQuery UI对话框。('Close')解雇太早了?

时间:2009-06-08 15:12:29

标签: jquery jquery-ui

我正在尝试在我的应用中创建一条弹出消息。成功之后我想打开一个对话框,为它制作动画......然后关闭它。我想一个更好的问题应该是,“你如何在Jquery中创建一个定时弹出窗口...但无论如何,当我运行我的代码时,我的对话框似乎只是瞬间出现。如果我删除对话框('关闭'行直到那一点为止.jquery是按顺序还是并行地触发这些命令?

$.ajax({
   type: "POST",
   url: "/Sales",
   data: { customer: [id] },
   success: function(msg) {
      $('#thanks').dialog('open');
      $('#thanks').animate({ backgroundColor: '#aa0000', color: '#fff', width: 500 }, 2000); 
      $('#thanks').dialog('close');
   }
});

4 个答案:

答案 0 :(得分:5)

使用行的方式,它几乎可以同步工作。尝试

 $('#thanks').dialog('open').animate({ backgroundColor: '#aa0000', color: '#fff', width: 500 }, 2000).dialog('close');

答案 1 :(得分:1)

您可能希望在 animate 函数的回调中关闭对话框:

$.ajax({
   type: "POST",
   url: "/Sales",
   data: { customer: [id] },
   success: function(msg) {
      $('#thanks').dialog('open');
      $('#thanks').animate({ backgroundColor: '#aa0000', color: '#fff', width: 500 }, 2000, "linear", function(){ $('#thanks').dialog('close'); }); 
   }
});

但我认为你最好不要使用插件,例如jGrowl

答案 2 :(得分:0)

可能不会等待动画完成。尝试添加等待2000,或链接关闭。

答案 3 :(得分:0)

.dialog('close')来电不等待您的动画。但是你真的想立即关闭对话框,或者你不应该等待用户输入(即链接/按钮点击)关闭它?