【问题标题】:close fancy box from function from within open 'fancybox'从打开的“fancybox”中关闭功能中的花式框
【发布时间】:2009-12-01 22:13:54
【问题描述】:

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

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

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

foo 将在对话框中打开,但不会关闭。有什么提示吗?

【问题讨论】:

  • 是否产生了任何错误?此外,除了 jQuery(原型或 mootools 等)之外,您是否在页面上使用任何其他 javascript 库。

标签: javascript jquery fancybox


【解决方案1】:

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

Fancybox API documentation

【讨论】:

  • 我在使用 $.fancybox.close() 时遇到了问题,但这对我有用。
【解决方案2】:

根据http://fancybox.net/faq

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

只需拨打$.fn.fancybox.close() 你的 onClick 事件

所以你应该可以添加fn

【讨论】:

  • 哈哈...我看源码,你看FAQ。 +1 让你变得更聪明 :)
  • 看起来他们已经更新了常见问题解答,让您致电 $.fancybox.close();
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

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

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

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

    【讨论】:

    • 但是这种方法并没有删除背景 div。它只是关闭了盒子。
    • 如果你的背景没有被删除,那么要么你创建了那个背景并强迫,以某种方式使用它,或者你在你的 js 上遇到错误,在花式框的某个地方正在关闭。或许你需要尝试一些大胆的尝试:打开花哨的 box js 文件,然后将警报命名为该函数的每个部分。没有打开的是给出错误的行。您也可以在其他方法中使用 try catch 语句,并在错误发生时立即显示或写入错误。以防万一,这里是如何使用它:w3schools.com/jS/js_try_catch.asp。祝你好运。
    • 只是补充一些信息:在运行时发生的一些js错误,有时不会显示在错误日志中,如果你强制它重新抛出异常,它们通常会被错误日志。
    【解决方案5】:

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

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

    它对我有用!

    【讨论】:

    • 这个很有帮助,也可以用 .trigger('click');
    • 由于我的 FancyBox 中加载的框架没有 jQuery 引用,所以我最终使用了它,它运行良好。
    【解决方案6】:

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

    parent.jQuery.fancybox.close()
    

    【讨论】:

    • 在所有这些中,这对我有用。
    【解决方案7】:

    有点旧线程但是...

    实际上,我怀疑关于如何从窗口中关闭窗口的原始问题的答案更多地与点击事件未附加到元素的事实有关。如果 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”可能同样有效。

    【讨论】:

      【解决方案8】:

      使用它来关闭它:

      $.fn.fancybox.close();
      

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

      【讨论】:

        【解决方案9】:

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

        【讨论】:

          【解决方案10】:

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

          【讨论】:

            【解决方案11】:

            我最终使用了:

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

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

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

            【讨论】:

              【解决方案12】:

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

              哇哦。

              【讨论】:

                【解决方案13】:

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

                【讨论】:

                  【解决方案14】:

                  通过函数关闭fancybox,必须将setTimtout设置为将关闭fancybox的函数 Fancybox 需要一些时间来接受关闭功能 如果直接调用函数是不行的

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

                  【讨论】:

                    【解决方案15】:

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

                    【讨论】:

                      【解决方案16】:

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

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-09-21
                        • 1970-01-01
                        • 2014-01-18
                        相关资源
                        最近更新 更多