2010-12-08 102 views
25

我已经实现了以下代码,用于在jQuery对话框中上传照片(使用iframe)。关闭Iframe中的jQuery UI对话框

这里的I帧

<div style="display: none"> 
    <iframe id="upload-form" frameborder="0" marginheight="0" marginwidth="0" src="Upload.aspx"></iframe> 
</div> 

下面是这需要打开该对话框的护理父页上的jQuery代码

$("#upload-image").click(function (e) { 
    e.preventDefault(); 
    $('#upload-form').dialog({ 
     modal: true, 
     width: 300, 
     title: "Upload Image", 
     autoOpen: true, 
     close: function(event, ui) { $(this).dialog('close') } 
    }); 
}); 

我再注射后上传脚本(iframe的页面上)是成功的,其传递一个结果回父页面,但我想在同一时间关闭对话框。

$(document).ready(function() { 
    $(parent.document).find('#imagePathValue').val('theimagevalue'); 
    $(parent.document).find('#upload-form').dialog('close'); 
}); 

的​​表被成功过去了,但我似乎无法能够关闭对话框。

任何想法?

回答

39

为了使其工作,你必须从父调用jQuery的,而不是从iframe中。要做到这一点,使用以下...

window.parent.jQuery('#upload-form').dialog('close'); 

这应该做到这一点!

+0

这就是交配,谢谢! :) – Marko 2010-12-08 21:35:35

5

试试这个:

$(document).ready(function() { 
    $(parent.document).find('#imagePathValue').val('theimagevalue'); 
    window.parent.$('#upload-form').dialog('close'); 
}); 
+0

我认为这个效果很好+1 – Marko 2010-12-08 21:36:06

+0

两个答案都是一样的,所以是的。 – 2010-12-08 21:44:31

2

此外,你也应该这样做:

window.parent.$('#upload-form').remove(); 

这样的iFrame实例对话框关闭后取出。

所以最终代码应该是:

$(document).ready(function() { 
    $(parent.document).find('#imagePathValue').val('theimagevalue'); 
    window.parent.$('#upload-form').dialog('close'); 
    window.parent.$('#upload-form').remove(); 
}); 

感谢 Kaushal

-1

当然记得,调用这些类型的功能,它必须参照该函数的父文件本身英寸当你使用jquery构造函数的第二个参数时,你只是指定方法的目标,而不是在哪里执行它。

这就是为什么$('element', window.parent.document).method();不起作用,window.parent.jQuery('element').method();会。