如何从子窗口关闭fancybox?

时间:2010-12-08 17:46:02

标签: jquery ajax fancybox

父链接:

<a href="feedback.php" id="feed">Provide your feedback here</a>

启动fancybox的jQuery代码是......

$("#feed").fancybox();

代码在feedback.php ...

      <html>
        <head>
<script language="javascript">    
$(document).ready(function(){
    $("#feed_submit").click(function(){
    //Name is alerted
    alert($("#name").val());

    //code to close fancy box(Not working)
    $.fancybox.close();

    });
    });
</script>
        </head>
        <body>
        <form method="post" name="feedback" id="feedback" action="">
                <div>
                    <label>name</label>
                    <input type="text" name="name" id="name"/>
                </div>
                <div>
                    <label>feedback</label>
                    <input type="text" name="content" id="content"/>
                </div>
        <div><input type="button" name="feed_submit" id="submit" value="submit"></div>
    </form>    
    </body>
    </html>

点击提交按钮后,我需要使用jquery关闭此页面本身的精美框

我尝试过使用

$.fancybox.close();
parent.$.fancybox.close();

但这对我不起作用。如果有任何关闭此ajax表格的选项,请告诉我。

10 个答案:

答案 0 :(得分:10)

以下代码应该有效,并且已经为很多人工作

parent.$.fn.fancybox.close();

但是,我也看到,例如in this question,jQuery在noConflict模式下运行,用户不知道。如果是这种情况,则必须将脚本修改为

parent.jQuery.fn.fancybox.close();

如果这些都不起作用,请使用Firebug for Firefox或Chrome开发人员控制台等工具查看是否有错误消息,并向我们报告它是什么。

答案 1 :(得分:7)

尝试

window.parent.$.fancybox.close();

假设 $.fancybox.close();在父窗口中有效。

答案 2 :(得分:2)

尝试:

$("#fancybox-close").trigger('click');

答案 3 :(得分:1)

当您使用类型为iframe的fancybox时,在iframe框中您必须插入所有库,如jquery等。然后关闭iframe花式框只需使用parent。$。fancybox.close()

请记住在新窗口中打开类型为“iframe”的fancybox,在同一窗口中打开包含其他类型的fancybox。

答案 4 :(得分:1)

面对同样的问题,这是我能找到的唯一解决方法:

代码本身是:

parent.jQuery.fancybox.close();

它在一个函数中运行:

jQuery("#cancelId").click(function(){
    parent.jQuery.fancybox.close();
});
希望它有所帮助, 闹热

答案 5 :(得分:0)

$.fn.fancybox.close();

这有用吗?

答案 6 :(得分:0)

//在子窗口或iframe上放置此函数:

function closeIframe(){ parent.closeIframeMain(); }

//此链接关闭此窗口

<a onclick="closeIframe();" href="#">Close window</a>

//然后在父窗口上放置此函数:

function closeIframeMain(){ jQuery("#fancybox-close").trigger("click"); }

答案 7 :(得分:0)

它肯定会起作用,只需复制并粘贴它即可:

<a href="javascript:;" onclick="jQuery('.fancybox-close').fancybox().trigger('click');">Close from Inside</a>

实际上它会触发关闭按钮,如果fancybox本身,它在大多数情况下都有效。

享受编程乐趣:)

答案 8 :(得分:0)

我遇到了同样的问题,但是使用了ASP.NET。

基本上,在页面上,我打开一个页面(里面有一个表单控件),如下所示:

$.fancybox({
                href: '/ContactUs.aspx',
                type: 'iframe',
                padding: 60,
                width: 465,
                height: 670,
                maxWidth: 465,
                maxHeight: 670,
            });

当我在FancyBox上单击关闭时,它可以正常工作,但如果我先提交它然后关闭它,fancyBox将不会关闭,即使页面位于同一个域中。

最后,我发现你必须在打开FancyBox时设置autoSize:false:

 $.fancybox({
                href: '/ContactUs.aspx',
                type: 'iframe',
                padding: 60,
                width: 465,
                height: 670,
                maxWidth: 465,
                maxHeight: 670,
                autoSize: false
            });

现在应该可行了。如果这适用于其他任何人,请回复。欢呼声。

威尔

答案 9 :(得分:-1)

parent.jQuery.fancybox.close(); 用。$。 - IE8中的折痕。 有了这个 - 一切都好。