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

jquery-ui中.dialog("close").dialog("destroy")有什么.dialog("destroy")

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

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

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

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

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

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

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

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

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

来自Docs

破坏:

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

关:

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