2012-01-09 93 views
1

我试图手动关闭按钮点击Jquery Dialog window而不使用$('#id').dialog('close')命令。手动关闭Jquery对话窗口

原因是我打开ajax调用时会打开对话窗口,所以.dialog不再适用于响应。我的问题是,我设法通过删除窗口本身和叠加层的div来手动关闭对话框窗口,但由于某些原因,背景窗体仍然保持禁用状态。

即使一切似乎都被删除,仍然无法点击按钮或表单域,所以我想知道是否我错过了一些东西。有谁知道还有什么Jquery用来禁用模式对话框窗口的背景吗?

更新 我试图从HomeController返回视图,努力以某种方式手动删除覆盖和窗口后刷新页面。该网页仍然被禁用,但我还没有找出原因。

+1

是不是很容易,只需创建一个范围,其中两个Ajax调用和显示对话框功能驻留在? – PeeHaa 2012-01-09 17:04:25

+0

你如何加载你的ajax?通常关闭应该在这个调用之后工作...并且对于没有响应的表单,这可能是由于一些覆盖,不是吗? – 2012-01-09 18:29:31

+0

你能举一个你如何创建这样一个范围的例子吗? – Nozoku 2012-01-09 19:58:07

回答

1

基于在您的描述中,听起来像ajax调用正在以某种方式修改页面,这会改变jQueryUI对话框所基于的div。在div(或其他元素)上调用dialog方法后,它实际上属于jQueryUI,并且在调用.dialog("destroy")之前不得触摸它。你必须:

  1. 确保该jQueryUI的周围不是由AJAX调用的结果或

  2. 之前触及加上股利,并标记在div被修改,通话$("#id).dialog("destroy");然后在ajax调用完成后再重新创建对话框。

+0

这工作。谢谢! – Nozoku 2012-01-13 14:48:23

0

指定点击功能按钮来

$("#button").click(function() 
{ 
$("#id").dialog('close'); 
}); 

$(".selector").bind("dialogclose", function(event, ui) { 
    ... 
}); 

也许我不明白你的问题:)

+0

我已经完成了这些。在Ajax调用之后关闭函数不再起作用,因为对话窗口不再被实例化。重新设置对话框窗口会导致不希望的效果。 – Nozoku 2012-01-09 19:59:57

+0

为我提供JavaScript代码(仅限于对话框的ajax)才能完全查看问题。 – 2012-01-10 06:28:51

0

不知道如何不起作用:

$("#modal").dialog({ 
     autoOpen : false, 
     modal : true 
    }); 

    // to open 
    $("#modal").dialog("open"); 

    // to close 
    $("#modal").dialog("close"); 
1

试试这个:

window.parent.jQuery('#ModalDialog').dialog('destroy');