.dialog(“close”)和.dialog(“destroy”)之间的区别

时间:2013-08-05 10:17:49

标签: jquery jquery-ui

jquery-ui中.dialog("close").dialog("destroy")之间有什么区别?

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

如果我使用.dialog("close")而不是.dialog("destroy"),那么我会错过任何内容吗?

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

3 个答案:

答案 0 :(得分:28)

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

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

destroy删除包含对话框的内容的元素(即您调用.dialog的元素)< / p>

答案 1 :(得分:8)

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

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

$dialog = $("#your_dialog_id");
$dialog.dialog('option', {
    title: "title",
    close: function (event, ui) {
        $dialog.find("form").remove();
        $dialog.dialog('destroy');
    }
});

答案 2 :(得分:5)

来自Docs

  

<强>破坏:

     

完全删除对话框功能。这将返回   元素回到pre-init状态。

     

关闭

     

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