20

jquery-ui.dialog("close")和in有什么区别?.dialog("destroy")

我有一个以前的开发人员使用过的脚本,.dialog("destroy")但现在我必须在对话框关闭后执行一些操作。我发现beforeclose它被称为 with.dialog("close")而不是 with .dialog("destroy")。所以我必须将方法从destroyto更改close为使其工作。

如果我使用.dialog("close")而不使用,有什么我会想念的吗?.dialog("destroy")使用,我会错过什么吗?

PS:对话框使用自定义按钮关闭自身,并在.dialog("close")按钮的点击事件上调用

4

3 回答 3

30

close保留已配置的对话框,但不可见,因此您可以使用 再次重新打开它.dialog('open')

destroy将完全取消配置对话框。它将删除所有添加到 DOM 的 UI 元素,以及任何相关的事件处理程序。

destroy不会删除包含对话框内容元素(即您调用的元素).dialog

于 2013-08-05T10:19:04.547 回答
8

请记住,如果您将对话框用于表单输入,那么销毁它不会删除您的输入,因此如果您使用 :input 伪选择器进行验证,您“销毁”的元素将被验证。这就是 .remove() 派上用场的地方。

您可以添加一个自定义关闭事件,该事件会破坏您的对话框并删除其中的任何表单以防止进一步验证它。

$dialog = $("#your_dialog_id");
$dialog.dialog('option', {
    title: "title",
    close: function (event, ui) {
        $dialog.find("form").remove();
        $dialog.dialog('destroy');
    }
});
于 2014-08-12T09:29:59.217 回答
6

文档

破坏:

完全删除对话框功能。这将使元素返回到它的预初始化状态。

关:

关闭对话框,可以在需要时重新打开。

于 2013-08-05T10:20:51.927 回答