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();
这应该解决你的问题。