JQueryUI 对话框-关闭后不打开

我的 jquery-ui dialog box有点问题。

问题在于,当我关闭对话框并单击触发该对话框的链接时,除非刷新页面,否则它不会再次弹出。

如何在不刷新实际页面的情况下返回对话框。

下面是我的代码:

$(document).ready(function() {
$('#showTerms').click(function()
{
$('#terms').css('display','inline');
$('#terms').dialog({
resizable: false,
modal: true,
width: 400,
height: 450,
overlay: { backgroundColor: "#000", opacity: 0.5 },
buttons:{ "Close": function() { $(this).dialog("close"); } },
close: function(ev, ui) { $(this).remove(); },
});
});

谢谢

225481 次浏览

在最后一行,不要使用 $(this).remove(),而是使用 $(this).hide()

编辑: 澄清一下,在关闭单击事件中,您正在从 DOM 中删除 #terms div,这就是为什么它不会返回的原因。你只需要把它藏起来。

我破案了。

我用销毁代替关闭函数(这没有任何意义) ,但它工作。

$(document).ready(function() {
$('#showTerms').click(function()
{
$('#terms').css('display','inline');
$('#terms').dialog({resizable: false,
modal: true,
width: 400,
height: 450,
overlay: { backgroundColor: "#000", opacity: 0.5 },
buttons:{ "Close": function() { $(this).dialog('**destroy**'); } },
close: function(ev, ui) { $(this).close(); },
});
});
$('#form1 input#calendarTEST').datepicker({ dateFormat: 'MM d, yy' });
});
$(this).dialog('destroy');

工作!

实际上应该使用 $("#terms").dialog({ autoOpen: false });来初始化它。 然后可以使用 $('#terms').dialog('open');打开对话框,使用 $('#terms').dialog('close');关闭对话框。

我相信您只能初始化对话框一次。上面的示例试图在每次单击 # term 时初始化对话框。这会引起问题的。相反,初始化应该发生在 click 事件之外。你的例子应该是这样的:

$(document).ready(function() {
// dialog init
$('#terms').dialog({
autoOpen: false,
resizable: false,
modal: true,
width: 400,
height: 450,
overlay: { backgroundColor: "#000", opacity: 0.5 },
buttons: { "Close": function() { $(this).dialog('close'); } },
close: function(ev, ui) { $(this).close(); }
});
// click event
$('#showTerms').click(function(){
$('#terms').dialog('open').css('display','inline');
});
// date picker
$('#form1 input#calendarTEST').datepicker({ dateFormat: 'MM d, yy' });
});

我在想,一旦你弄清楚了这一点,它应该解决你所描述的“从链接打开”的问题。

.Close ()是比较通用的,可以用来引用更多的对象。.对话框(“关闭”)只能与对话框一起使用

JQuery 文档有一个到本文的链接 “ JQueryUI 对话框的基本用法” 解释了这种情况以及如何解决它。

对我来说,这种方法是有效的:

通过单击对话框上的 X 或单击“注意”可以关闭对话框。我添加了一个(任意的) id,因为我需要确保添加到 dom 中的每一个 html 都在之后被删除。

$('<div id="dossier_edit_form_tmp_id">').html(data.form)
.data('dossier_id',dossier_id)
.dialog({
title: 'Opdracht wijzigen',
show: 'clip',
hide: 'clip',
minWidth: 520,
width: 520,
modal: true,
buttons: { 'Bewaren': dossier_edit_form_opslaan },
close: function(event, ui){
$(this).dialog('destroy');
$('#dossier_edit_form_tmp_id').remove();
}
});

我使用对话框作为一个对话框文件浏览器和上传器,然后我重写这样的代码

var dialog1 = $("#dialog").dialog({
autoOpen: false,
height: 480,
width: 640
});
$('#tikla').click(function() {
dialog1.load('./browser.php').dialog('open');
});

一切都很顺利。

我有同样的问题与 jquery-ui 覆盖对话框-它将只工作一次,然后停止,除非我重新加载页面。我在他们的一个例子中找到了答案
同一页面上的多个覆盖图
Flow player _ tools _ multi _ open _ close
- 谁会这么做呢,对吧

重要的设置似乎是

oneInstance: false

所以,现在我是这样的

$(document).ready(function() {


var overlays = null;


overlays = jQuery("a[rel]");


for (var n = 0; n < overlays.length; n++) {


$(overlays[n]).overlay({
oneInstance: false,
mask: '#669966',
effect: 'apple',
onBeforeLoad: function() {
overlay_before_load(this);
}
});


}


}

一切都很顺利

希望这能帮到别人

哦。

 <button onClick="abrirOpen()">Open Dialog</button>


<script type="text/javascript">
var $dialogo = $("<div></div>").html("Aqui tu contenido(here your content)").dialog({
title: "Dialogo de UI",
autoOpen: false,
close: function(ev, ui){
$(this).dialog("destroy");
}
function abrirOpen(){
$dialogo.dialog("open");
}
});


//**Esto funciona para mi... (this works for me)**
</script>

这是一个超级老的主题,但是因为答案甚至说“它没有任何意义”,我想我应该加上答案..。

原帖使用 $(this)。Remove () ; 在关闭处理程序中,这实际上会从 DOM 中删除对话框 div。再次尝试初始化对话框将无法工作,因为 div 已被删除。

使用 $(this) . Dialogue (‘ broke’)调用在对话框对象中定义的方法 delete,该方法不会将其从 DOM 中删除。

根据文件:

毁灭

完全移除对话框功能,这将使元素返回到其 > > pre-init 状态。 此方法不接受任何参数。

也就是说,只有在有充分理由的情况下,才可以在附近销毁或移除。