【问题标题】:jQuery UI dialog close doesn't clear dialogjQuery UI 对话框关闭不清除对话框
【发布时间】:2010-07-22 15:56:02
【问题描述】:

使用jQuery UI,我有一个选项卡插件,在选项卡 1 中加载了一个页面,该页面包含一个表格,每一行都有一个对话框链接。

一切正常,保存以下:

对话框中有一个选项,用于删除从中打开当前对话框的行。确认并删除行后,刷新选项卡并显示新表,相关行已删除。

现在,问题在于,在关闭我执行删除操作的对话框后(通过执行删除操作的 JavaScript 函数,或通过对话框上的关闭按钮手动关闭),对话框会保留已删除行中的数据。

例如,

列出了三行;

从第 2 行打开对话框;

删除;

从 JavaScript 函数关闭对话框,标签刷新,现在是两行;

第二行(以前是第3行)的对话框打开链接与刚刚打开的对话框ID相同;

单击第 2 行中的打开对话框链接;

对话框显示与以前相同 - 旧的第 2 行,而不是当前的第 2 行;

关闭对话框;

单击第 2 行中的打开对话框链接;

正确显示 - 当前第 2 行的数据;

我不知道这是否有意义......这是发生了什么的图片:

因此,被删除的行下方的行会继承对话框 ID,单击时会显示旧对话框。如果关闭,然后重新打开,它会在对话框中显示正确的内容。

我目前正在使用dialog("close"),并尝试过dialog("destroy"),但这完全杀死了它,下面的行没有打开任何东西......

我该如何解决这个问题?


对话框实例化代码:

<script>
<?php
$ee=1;
foreach($bugs->result() as $rr){
    echo "jQuery(\"#dialog_$ee\").dialog({autoOpen:false,width:850,height:550});\n";
    $ee++;
}
?>
</script>

然后打开对话框:

jQuery("#dialog_<?=$i?>").dialog("open");

【问题讨论】:

  • 我们需要查看您打开对话框的代码。
  • @Nick Craver jQuery("#dialog_7").dialog("open");
  • 必须不止这些,对话框中有标题和内容...需要代码来解决问题:)
  • @Nick Craver - 说真的,这就是用于打开对话框的所有代码......问题不在于打开它(无论如何在 jquery-ui 中打开它们的选项很少) .我添加了上面的实例化代码,以防你正在寻找。谢谢!

标签: jquery jquery-ui jquery-ui-dialog


【解决方案1】:

事实证明,对话并没有去任何地方。关闭它后,现在有两个对话框具有相同的id

在调用的删除函数的成功处理程序中,我最终重置了对话框 id,然后对其调用了 dialog("destroy"):

onSuccess: function(transport){
    var tabs = jQuery('#tabs').tabs();
    tabs.tabs( 'url', 0,'/bugs/loadTab1');
    tabs.tabs('load', 0);
    closeDialog(dialogID);
    jQuery("#"+dialogID).attr("id",dialogID+"_old");
    jQuery("#"+dialogID+"_old").dialog("destroy");
},

【讨论】:

  • 是的,如果存在两个具有相同 ID 的对话框标签(这不是有效的 HTML),就会出现这种情况。
【解决方案2】:

博文中有答案Creating dialogs on demand

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多