当overlay设置为null时,使用外部单击关闭fancybox

我正在使用fancybox 2.1.4插件。
它运作完美,但我有一个问题。
我想将叠加设置为null,我想在用户点击外部(!)fancybox容器时关闭fancybox。

我尝试了以下代码,但它无法正常工作,因为没有可以单击的叠加层。

$(".fancy_gallery").fancybox.({ loop:false, padding:0, helpers:{ overlay:null, closeClick:true } }); 

那么,当我点击外面时,我怎么能强制关闭fancybox呢?
因为,现在我必须单击关闭按钮才能关闭它。

您可以将click事件绑定到afterShow回调中的fancybox父级( html,body )以强制关闭(并在关闭后unbind )….所以请尝试以下代码:

 var fancyParent; $(".fancy_gallery").fancybox({ loop: false, padding: 0, helpers: { overlay: null // closeClick: true // useless without an overlay }, afterShow: function () { fancyParent = $(".fancybox-wrap").parents(); // normally html and body fancyParent.on("click", function () { $.fancybox.close(); }); $(".fancybox-wrap").on("click", function (event) { // prevents closing when clicking inside the fancybox wrap event.stopPropagation(); }); }, afterClose: function () { fancyParent.unbind("click"); } }); 

请参阅JSFIDDLE

你的代码必须是这样的:

 helpers: { title : { type : 'inside' }, overlay : { showEarly : false } } 

在帮助者名称后面有一个选项后,这些字符{ – }丢失了。 FancyBox在这里有一个例子: http : //jsfiddle.net/PFVxK/