Jquery对话框 – div在初始化后消失
JQuery Dialog最近给了我很多痛苦。 我有以下div想要弹出。 (忽略类没有在语法中显示双引号)
TABLE class=widget-title-table border=0 cellSpacing=0 cellPadding=0>
这个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中的任何地方移动到文档底部,在包装元素中创建对话框样式最初隐藏。 据了解,对话框在打开之前是隐藏的。
好的。 我想我已经在你们的帮助下钉了它。
我现在知道的一些关于对话的“自定义”事实(如果我错了,请纠正):
-
当
初始化为对话框时,它将从原始位置删除并移动到
的
元素。 所以它“自然地”消失了。
-
要选择对话框,您现在需要一个唯一标识符。 在大多数情况下,它可以是id ,或者该div上的一些其他属性,这使得它在页面上是唯一的。
-
每次初始化对话框时都会创建对话框标记。 因此,在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(...)
显然,无论对话框在页面上移动它,都会找到它。
Interesting Posts