【问题标题】:How to recreate jquery dialog after destroy销毁后如何重新创建jquery对话框
【发布时间】:2009-11-11 22:48:50
【问题描述】:

我在页面加载时创建了三个模式对话框(使用$(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,那么我应该在哪里重新初始化对话框有什么想法吗?

谢谢。

【问题讨论】:

    标签: jquery jquery-ui dialog modal-dialog


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 2018-05-08
      • 1970-01-01
      • 2016-04-01
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多