如何更改现有Fancybox实例的选项?

时间:2014-08-13 08:44:30

标签: jquery fancybox fancybox-2

我想在Fancybox实例打开之后,在自己的回调之外更改它们的选项。

具体来说,我想在弹出窗口中点击一个按钮后禁用选项closeClick

此按钮触发可能需要几秒钟才能完成的功能,所以我想分别在所述功能的开头和结尾禁用并重新启用 closeClick选项

Fancybox实例:

$.fancybox.open({
    wrapCSS        : 'myPopupClass',
    href           : '#myPopupHTML',
    autoScale      : false,
    autoDimensions : false,
    padding        : 0,
    autoWidth      : true,
    arrows         : false,
    closeBtn       : false,
    scrollOutside  : true,
    openSpeed      : 0,
    closeSpeed     : 0,
    openEffect     : 'none',
    closeEffect    : 'none',
    helpers        :
    {
        overlay :
        {
            css :
            {
                'background': 'rgba(0,0,0,0.2)'
            },
            locked : false
        }
    }
});

在其他地方更改closeClick选项,例如:

$('.myPopupClass').fancybox({
    helpers :
    {
        overlay :
        {
            closeClick: false
        }
    }
});

还需要在不同的脚本中完成,具有以下加载顺序:

<script src="preventCloseClick.js"></script>   // Toggle CloseClick in this file
<script src="popup.js"></script>   // Initialize popup in this file

原因是第一个文件在每个页面上(我也需要弹出功能),而第二个文件只在一个特定的页面上。

我猜可能要将它全部放在一个文件中?


更新suggested by JFKthis answer解决了我的问题!

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情

$('.myPopupClass').on('beforeClose', function (oEvent) {
    oEvent.preventDefault();
    return false;
});

这可能会取消关闭程序,根据第5行。 403 https://github.com/fancyapps/fancyBox/blob/master/source/jquery.fancybox.js

之后,您可以将自己的点击处理程序绑定到fancy-box关闭按钮并取消该事件。

function blockClicks(oEvent) {
    oEvent.stopImmidiatePropagation();
    oEvent.preventDefault();
}

$('<close button selector>').on('click', blockClicks);

然后在完成后立即触发重处理 - 删除点击阻止程序

$('<close button selector>').off('click', blockClicks);

通过API触发精彩的盒子关闭:

$.fancybox.close();

我尚未测试上面的所有代码段,但它们可能会让您了解如何处理您的问题。