2009-11-11 45 views
6

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

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: function() { 
    $(this).dialog('destroy'); 
    setDialogWindows($element); 
    }, 

但是,这并不工作 - 当我单击要打开的链接仍然没有打开。有没有办法重新创建对话框?如果我现在唯一要做的地方是document.ready,我应该在哪里重新初始化对话框?

谢谢。

回答

4

您可以将setDialogWindows为点击处理程序,并打开的AutoOpen为真,是这样的:

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

这将初始化为每次点击的对话框,并摧毁它时,它被关闭。

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

相关问题