从开放'fancybox'中的功能关闭精美的盒子

时间:2009-12-01 22:13:54

标签: javascript jquery fancybox

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

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

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

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

16 个答案:

答案 0 :(得分:162)

试试这个: 。父$ fancybox.close();

请参阅Fancybox API documentation

答案 1 :(得分:17)

根据http://fancybox.net/faq

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

    只需致电$.fn.fancybox.close()即可   你的onClick事件

所以你应该只能添加fn

答案 2 :(得分:10)

如果您只想关闭花式框,则关闭它就足够了。

$('#inline').click(function(){
  $.fancybox.close();
});

答案 3 :(得分:9)

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

问题是你可能遇到了js的另一个错误 屏幕上有任何错误?
你的fancybox和jquery是最新版本吗? jquery目前在1.4.1和fb在1.3的东西

尝试将链接放在fancybox中并将该函数放入其中。

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

您可能需要做的一件事就是隔离每个部分以实现它的目的。

答案 4 :(得分:5)

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

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

对我有用!

答案 5 :(得分:4)

我长期遇到同样的问题,然后我通过以下代码得到解决方案。 请使用

parent.jQuery.fancybox.close()

答案 6 :(得分:3)

旧线程的一点但是......

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

您需要在新窗口后重新应用click事件。可能最简单的方法是使用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();})}
});

实际上,经过一些思考'实时'而不是'点击'或'绑定'可能同样有效。

答案 7 :(得分:2)

使用它来关闭它:

$.fn.fancybox.close();

从fancybox源代码判断,就是他们在内部处理它的方式。

答案 8 :(得分:1)

在努力解决这个问题后,我找到了一个解决方案,只需用jQuery jQuery.fancybox.close()替换$,我就在onClick上创建了一个内联脚本。去检查我是否可以从父母那里拨打电话

答案 9 :(得分:1)

对于那些花了几个小时的人来找出内联类型的解决方案:window.setTimeout(function(){$ .fancybox.close()},10);

答案 10 :(得分:1)

我最终使用了:

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

我想我们的fancybox版本没有$ .fancybox.close()函数供我调用:(

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

答案 11 :(得分:1)

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

哇噢。

答案 12 :(得分:0)

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

答案 13 :(得分:0)

通过funciton关闭fancybox,使setTimtout成为关闭fancybox的函数 Fancybox需要一些时间来接受关闭功能 如果直接调用该函数将无法正常工作

function close_fancybox(){
$.fancybox.close();
                     }
setTimeout(close_fancybox, 50);

答案 14 :(得分:0)

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

答案 15 :(得分:-1)

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

onclick event -> $.fancybox.close();
return false;