我想在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 JFK,this answer解决了我的问题!
答案 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();
我尚未测试上面的所有代码段,但它们可能会让您了解如何处理您的问题。