我正在使用 Fancybox 插件制作模态窗口。无论我使用什么选项,似乎都无法防止 fancybox 模态窗口在用户单击 fancybox 模态窗口外部(灰色区域)时关闭。
是否有一种方法可以强制用户单击 X 或由我触发的按钮来关闭事件?这似乎应该很简单,所以我希望我只是看错示例。
我尝试过 hideOnContentClick: false
,但它对我不起作用。有什么想法吗?
我正在使用 Fancybox 插件制作模态窗口。无论我使用什么选项,似乎都无法防止 fancybox 模态窗口在用户单击 fancybox 模态窗口外部(灰色区域)时关闭。
是否有一种方法可以强制用户单击 X 或由我触发的按钮来关闭事件?这似乎应该很简单,所以我希望我只是看错示例。
我尝试过 hideOnContentClick: false
,但它对我不起作用。有什么想法吗?
jQuery(".lightbox").fancybox({
helpers : {
overlay : {
speedIn : 0,
speedOut : 300,
opacity : 0.8,
css : {
cursor : 'default'
},
closeClick: false
}
},
});
<script type="text/javascript">
$(document).ready(function() {
$("#your_link").fancybox({
'hideOnOverlayClick':false,
'hideOnContentClick':false
});
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$("#your_link").fancybox({
'hideOnOverlayClick':false,
'hideOnContentClick':false
});
});
</script>
$("YourElement").fancybox({
helpers: {
overlay: { closeClick: false } //Disable click outside event
}
没有这个选项。您需要更改源代码。
在jquery.fancybox-1.2.1.js中,您需要注释掉(或删除)_finish方法中的第341行:
//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);
我遇到了同样的“问题”。这个方法对我有效:
$("#fancybox-overlay").unbind();
以上方法对我都没有用,所以我写了一个简单的代码来适配最新版本的fancybox。
function load(parameters) {
$('.fancybox-outer').after('<a href="javascript:;" onclick="javascript:{parent.$.fancybox.close();}" class="fancybox-item fancybox-close" title="Close"></a>');
}
$(document).ready(function () {
$(".various").fancybox({
modal: true,
afterLoad: load
});
});
@Gabriel提供的$("#fancybox-overlay").unbind()
解决方案对于这个问题是有效的,但我需要在fancybox加载其内容后将其绑定到fancybox上,而且我不能立即解除绑定。对于任何遇到这个问题的人,以下代码为我解决了问题:
$('.fancybox').fancybox({'afterLoad' : function() {
setTimeout(function() { $("#fancybox-overlay").unbind(); }, 400);}
});
400毫秒的延迟对我有用。300毫秒也可以,但我不想冒险。
closeClick
参数设置为 false :$(".video").click(function() {
$.fancybox({
width: 640,
height: 385,
helpers: {
overlay: {
closeClick: false
}
}
});
return false;
});