Jquery对话框 – div在初始化后消失

JQuery Dialog最近给了我很多痛苦。 我有以下div想要弹出。 (忽略类没有在语法中显示双引号)

TABLE class=widget-title-table border=0 cellSpacing=0 cellPadding=0>   Basic Info  

这个JQuery是……

 $(document).ready(function() { $('#confirmation').dialog({ bgiframe: true, modal: true, autoOpen: false, closeOnEscape: false, draggable: true, position: 'center', resizable: false, width: 400, height: 150 }); }); 

对话框是’开放’的

 var confirmationBox = $('#confirmation',actionContent); if (confirmationBox.length > 0) { //Confirmation Needed $(confirmationBox).dialog('option', 'buttons', { 'No': function() { $(this).dialog('close'); }, 'Yes': function() { $('ul.read-mode').hide(); $.post(requestUrl, {}, ActionCallback(context[0], renderFormUrl), 'json'); $(this).dialog('close'); } }); $(confirmationBox).dialog('open'); } 

问题始于初始化本身。 加载文档时,将从标记中删除

! 我之前有类似的问题,但我不能在这里使用该解决方案。 在这个页面上,我可以拥有多个PopUp div。

当我在打开之前添加初始化时; 表格弹出。 但在我关闭之后,div被删除了; 所以我再也看不到弹出窗口了。

你看到删除#confirmation的原因是因为$("#foo").dialog()会将#foo从DOM中的任何地方移动到文档底部,在包装元素中创建对话框样式最初隐藏。 据了解,对话框在打开之前是隐藏的。

好的。 我想我已经在你们的帮助下钉了它。

我现在知道的一些关于对话的“自定义”事实(如果我错了,请纠正):

  1. 初始化为对话框时,它将从原始位置删除并移动到

    元素。 所以它“自然地”消失了。

  2. 要选择对话框,您现在需要一个唯一标识符。 在大多数情况下,它可以是id ,或者该div上的一些其他属性,这使得它在页面上是唯一的。

  3. 每次初始化对话框时都会创建对话框标记。 因此,在AJAX调用的情况下,如果启动了现有的对话框,您将不止一次获得弹出窗口(重新初始化的次数)。 为了解决这个问题,我在重新初始化之前删除了现有的对话框标记。 我不得不这样做,因为我的AJAX响应可能有一些需要启动的对话框。

     function InitializeConfirmationDialog() { $('div.confirmation-dialog').each(function() { var id = $(this).attr("id"); if ($('div.ui-dialog-content[id="' + id + '"]').length > 0) { $('div.ui-dialog-content[id="' + id + '"]').parents('div.ui-dialog:first').html("").remove(); } $(this).dialog({ bgiframe: true, modal: true, autoOpen: false, closeOnEscape: false, draggable: true, position: 'center', resizable: false, width: 400, height: 150 }); }); 

    }

在我的情况下,一个简单的’返回假;’ 在click函数中做了诀窍:

  $("#buttonIdThatOpensTheDialogWhenClicked") .button() .click(function () { $("#myDialog").dialog("open"); return false; }); }); 

你确定只有一个div有id“确认”吗? 不允许重复的ID。

批准的答案对我也有用。 我用的是:

 $('.myLink').click(function(){ $(this).next().dialog(...) }); 

点击第一次后就不存在了。

现在我正在使用ID:

 $("#myId").dialog(...) 

显然,无论对话框在页面上移动它,都会找到它。