Jquery对话框 – 多次向DOM添加对话框字段

我正在使用Jquery UI来显示选项卡。 在其中一个选项卡中,我有一个对话框。 如果我导航到该选项卡,打开对话框,关闭它,导航关闭选项卡然后再返回并打开对话框,我最终在DOM中有多个重复的HTML元素。

换一种说法…

我的主页设置有标签:

 

选项卡#2包含一个对话框:

 
... $("#dgEvent").dialog();

我发现如果我打开对话框,导航(转到另一个选项卡)然后再返回,下次打开对话框时,我最终会在DOM中找到名为“someId”的重复元素。 这会导致问题,因为当我尝试从someID中获取值时(即$(“#someID”)。val(),我最终从对话框的第一个实例获取值。)

是否有修复以确保在关闭对话框时删除字段? 或者更好的是,当导航到另一个标签时它们被正确删除了?

编辑

最后,我认为问题与Tabs和Dialog的使用有关。 当我离开选项卡时,我在对话框外的表单上的任何字段都会从DOM中删除。 但是,在我离开后,对话框中的任何内容都会保留在DOM中。 因此,当我向后导航时,我最终会重复。

使用

 $('#your-dialog').dialog('destroy').remove(); 

销毁对话框,然后使用remove()从DOM中remove()带有子节点的div。

问候。

我有类似的经历。
我的问题是由于在updatepanel有一个popup

引起的。
ajax调用之后,将创建一个新的副本。
要解决此问题,请避免将弹出

放在更新updatepanel
相反,将updatepanel放在弹出窗口


希望能帮助到你。

而不是$("#dgEvent").dialog(); ,尝试创建对话框,使其不自动打开,然后使用打开和关闭来显示/隐藏对话框:

 $("#dgEvent").dialog({ autoOpen: false }); $("#dgEvent").dialog('open'); $("#dgEvent").dialog('close'); 

请参阅jQuery UI对话框页面的概述部分,该页面引用了此博客文章 。

似乎该对话框正在被jQuery UI克隆并放置在DOM的末尾,在关闭对话框之前尝试将其从DOM中删除

 $("#dgEvent").remove(); 

这应该解决你的问题。