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

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

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

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

谢谢。

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

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

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

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