如何在销毁后重新创建jquery对话框

时间:2009-11-11 22:48:50

标签: jquery jquery-ui dialog modal-dialog

我在页面加载时创建了三个模态对话框(使用$(document).ready(function() {)。我通过调用setDialogWindows()方法创建这些对话框,并将其传递给对话框的div。对话框创建代码如下:

function setDialogWindows($element) {
 $element.dialog({
  autoOpen: false,
  modal: true,
  show: 'blind',
  hide: 'blind',
  width: 600,
  resizable: false,
  buttons: {
   Cancel: function() {
    $(this).dialog('destroy');
   },
   'Save': function() {
    $(this).dialog('close');
   }
  }
 });
}

我将为您提供对话框html,但是有一些jquery拖放功能,我希望在用户单击“取消”时完全重置。因此$(this).dialog('destroy')。但是,当我再次单击链接打开对话框时,它不会显示。我意识到这是因为我没有重新插入它,但我真的不能这样做,因为对话框是在页面加载时创建的。我尝试向Cancel函数添加一个递归调用,如下所示:

   Cancel: function() {
    $(this).dialog('destroy');
    setDialogWindows($element);
   },

但是这不起作用 - 当我点击应该打开它的链接时仍然没有打开。有没有办法重新创建对话框?如果我现在唯一的地方是在document.ready上,我应该重新初始化对话框的任何想法吗?

感谢。

1 个答案:

答案 0 :(得分:4)

您可以将setDialogWindows移动到单击处理程序并将autoOpen设置为true,如:

$('path/to/clickable/elements').click(function(){
  setDialogWindows($element);
});

这将在每次点击时初始化对话框,并在关闭时将其销毁。

您也可以打开单独的对话框,一个具有拖放功能,另一个没有它。