62

大家好,我希望从内部打开fancyBox时能够关闭它。

我尝试了以下但无济于事:

function closeFancyBox(html){
    var re = /.*Element insert complete!.*/gi;
    if( html.search( re ) == 0 ){
        $.fancybox.close();
        //alert("foo");
    }
}

foo 将在对话框中打开,但不会关闭。任何提示?

4

16 回答 16

167

试试这个: parent.$.fancybox.close();

请参阅Fancybox API 文档

于 2010-06-25T14:21:39.167 回答
17

根据http://fancybox.net/faq

  1. 如何从其他元素关闭 FancyBox??

只需调用$.fn.fancybox.close()您的 onClick 事件

所以你应该只能够添加fn.

于 2009-12-01T22:19:44.507 回答
12

如果您只想关闭花哨的盒子,关闭它就足够了。

$('#inline').click(function(){
  $.fancybox.close();
});
于 2011-06-09T09:54:53.123 回答
9

放.fn是没有用的,它会引用原型。
你需要做的是 $.fancybox.close();

问题是你可能遇到了另一个来自 js 的错误。
屏幕上有错误吗?
您的fancybox 和jquery 是最新版本吗?jquery 目前在 1.4.1 和 fb 在 1.3 什么的

尝试在fancybox 中放置一个链接并将该功能放入其中。

您可能已经阅读过,但无论如何, http: //fancybox.net/api

您可能需要做的一件事是隔离每个部分以了解它是什么。

于 2010-02-11T11:08:44.783 回答
5

您甚至可以通过获取关闭按钮 id 并在该 id 上调用 click 事件来关闭 fancybox。

<input type='button' value='Cancel' onclick='javascript:document.getElementById("fancybox-close").click();' />

这个对我有用!

于 2013-02-14T11:44:33.050 回答
4

我很长一段时间都遇到了同样的问题,然后我通过下面的代码得到了解决方案。请用

parent.jQuery.fancybox.close()
于 2012-07-05T11:43:38.147 回答
3

有点旧线程但是...

实际上,我怀疑关于如何从窗口关闭窗口的原始问题的答案更多地与单击事件未附加到元素的事实有关。如果 click 事件附加在 document.ready 中,则当 fancybox 创建新窗口时不会附加该事件。

一旦出现新窗口,您需要重新应用点击事件。可能最简单的方法是使用 onComplete 功能。

这对我有用:

$(".popup").fancybox({
    'transitionIn'  :   'fade',
    'transitionOut' :   'elastic',
    'speedIn'       :   600, 
    'speedOut'      :   400, 
    'overlayShow'   :   true,
    'overlayColor'  :   '#000022',
            'overlayOpacity'  : 0.8,
            'onComplete' : function(){$('.closer').click(function(){parent.$.fancybox.close();})}
});

实际上,经过一番思考,“live”而不是“click”或“bind”可能同样有效。

于 2011-05-12T14:59:19.793 回答
2

使用它来关闭它:

$.fn.fancybox.close();

从fancybox源代码来看,这就是他们在内部处理关闭它的方式。

于 2009-12-01T22:22:09.423 回答
1

在为此苦苦挣扎之后,我找到了一个解决方案,只需将 $ 替换为 jQuery jQuery.fancybox.close(),并将其设置为 onClick 上的内联脚本。去检查我是否可以从父母那里打电话

于 2011-11-02T10:35:41.490 回答
1

对于那些像我一样花费数小时寻找内联类型解决方案的人:window.setTimeout(function(){$.fancybox.close()},10);

于 2013-04-13T19:46:12.280 回答
1

我最终使用:

<script>parent.$("#fancy_close").click();</script>

我猜我们拥有的fancybox版本没有我可以调用的$.fancybox.close()函数:(

仅供参考,我只是想让页面关闭花式框,因为它已经在 PHP 中完成了处理。

于 2014-11-04T07:30:46.343 回答
1

添加$.fancybox.close()到您希望触发它的任何位置,在函数或回调中,ajax 调用结束!

呜呼。

于 2016-04-11T19:01:30.690 回答
0

在 iframe 中使用 - parent.$.fancybox.close();

于 2013-04-04T08:04:39.500 回答
0

通过函数关闭fancybox 必须将setTimtout 设置为将关闭fancybox 的函数 Fancybox 需要一些时间来接受关闭函数 如果直接调用该函数将不起作用

function close_fancybox(){
$.fancybox.close();
                     }
setTimeout(close_fancybox, 50);
于 2014-03-08T03:14:23.843 回答
0

是的,在 Virtuemart 中,它必须是按钮 CLOSE-继续购物,而不是元素,因为单击后您可以重定向.. 我在我的 ajax 网站上发现了这个重定向错误。

于 2016-03-24T21:50:05.563 回答
-1

要关闭 ajax fancybox 窗口,请使用:

onclick event -> $.fancybox.close();
return false;  
于 2017-07-22T04:04:22.740 回答