我为我的模态窗口使用Fancybox插件。无论我使用什么选项,似乎都无法阻止fancybox模式窗口在用户单击fancybox模式窗口(灰色区域)之外时关闭。jquery fancybox - 防止在fancybox之外点击关闭
有没有办法强制用户点击X或我触发关闭事件的按钮?这看起来应该很简单,所以我希望我只是读了错误的例子。我试过hideOnContentClick: false
但这似乎不适合我。有任何想法吗?
我为我的模态窗口使用Fancybox插件。无论我使用什么选项,似乎都无法阻止fancybox模式窗口在用户单击fancybox模式窗口(灰色区域)之外时关闭。jquery fancybox - 防止在fancybox之外点击关闭
有没有办法强制用户点击X或我触发关闭事件的按钮?这看起来应该很简单,所以我希望我只是读了错误的例子。我试过hideOnContentClick: false
但这似乎不适合我。有任何想法吗?
没有选择。你将不得不改变源代码。
在jquery.fancybox-1.2.1.js你需要注释掉(或删除)线341在_finish方法:
//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);
非常好。我评论了该行并添加了: $(“#fancy_close).bind(”click“,$ .fn.fancybox.close); 这正是我所需要的,谢谢! – Mike 2009-09-01 19:21:22
有一个选项cool_dev回答下面,编辑代码会导致问题,当您需要更新时,您的更改将被覆盖 – 2012-07-13 14:47:03
您是如何阅读该文件。有一种方法来转换缩小的Js? – 2014-01-08 09:50:22
我使用的fancybox 1.3.1,如果你想强制用户只需通过点击按钮,关闭模式对话框改变什么,你可以在指定配置:
<script type="text/javascript">
$(document).ready(function() {
$("#your_link").fancybox({
'hideOnOverlayClick':false,
'hideOnContentClick':false
});
});
</script>
非常感谢!使用fancybox 1.3.4 – 2015-07-14 20:18:20
Doesn' t工作在fancybox 2.0+ – Josh1billion 2016-01-04 22:22:22
<script type="text/javascript">
$(document).ready(function() {
$("#your_link").fancybox({
'hideOnOverlayClick':false,
'hideOnContentClick':false
});
});
</script>
我遇到了同样的“问题”。这为我工作:
$("#fancybox-overlay").unbind();
版本2.1.4他们可以将其更改为$(“。fancybox-ov erlay“)解除绑定(); – loQ 2013-05-20 15:19:39
jQuery(".lightbox").fancybox({
helpers : {
overlay : {
speedIn : 0,
speedOut : 300,
opacity : 0.8,
css : {
cursor : 'default'
},
closeClick: false
}
},
});
这实际上并没有回答使用fancybox v1.2.1的原始问题。对于v1.2.6和v1.3.4之间的版本,请参阅@ cool_dev的答案。对于fancybox 2.x请参阅http://stackoverflow.com/a/8404587/1055987 – JFK 2013-10-24 17:16:33
适合我!感谢代码非常有帮助! – 2013-11-19 06:42:19
以上都不是为我工作,所以我就写了的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
});
});
希望这有助于:)
最新版本fancybox检查http://stackoverflow.com/a/8404587/1055987 – JFK 2012-10-12 17:10:56
由@Gabriel这个问题给出的解决方案$("#fancybox-overlay").unbind()
除了工作,我需要加载的内容后,将其绑定到的fancybox,我不能马上解除绑定。对于谁运行到这个问题的人,下面的代码解决了这个问题对我来说:
$('.fancybox').fancybox({'afterLoad' : function() {
setTimeout(function() { $("#fancybox-overlay").unbind(); }, 400);}
});
的400ms的延迟得到它为我工作。它与300ms一起工作,但我不想冒险。
如果你正在使用Fancybox 1.2.6(就像我在一个项目上),我发现了选项hideOnOverlayClick。您可以将其设置为false(例如hideOnOverlayClick:false)。
我发现这个选项时,根据Scott Dowding提供的建议修改代码。
我不得不使用上述所有答案的组合,因为它们都包含错误。当然,不需要编辑源代码。
在我的情况下,我想关闭覆盖点击关闭框,因为我有一系列问题可以在fancybox内顺序显示,所以我不希望用户因意外地点击叠加层而失去进度,但希望在页面的其他地方保持该功能。
使用该禁用它:
$(".fancybox-overlay").unbind();
使用此功能重新启用它:
$(".fancybox-overlay").bind("click", $.fancybox.close);
只需使用下面的代码:
$(document).ready(function() {
$("a#Mypopup").fancybox({
"hideOnOverlayClick" : false, // prevents closing clicking OUTSIE fancybox
"hideOnContentClick" : false, // prevents closing clicking INSIDE fancybox
"enableEscapeButton" : false // prevents closing pressing ESCAPE key
});
$("a#Mypopup").trigger('click');
});
<a id="Mypopup" href="images/popup.png"><img alt="Mypopup" src="images/popup.png" /></a>
设置closeClick
参数虚假里面你的功能:
$(".video").click(function() {
$.fancybox({
width: 640,
height: 385,
helpers: {
overlay: {
closeClick: false
}
}
});
return false;
});
请不要喊,特别是不** **粗体** :-) – kleopatra 2013-11-05 23:29:52
可以防止花式盒应用这些设置
'showCloseButton'=>false, // hide close button from fancybox
'hideOnOverlayClick'=>false, // outside of fancybox click disabled
'enableEscapeButton'=>false, // disable close on escape key press
收得到的fancybox从以下链接
对于这一问题的设置,请尝试这种方式
$("YourElement").fancybox({
helpers: {
overlay: { closeClick: false } //Disable click outside event
}
希望这有助于。
您可以将默认的关闭点击重叠设置为false。在2.1.5版本中为我工作。
$.fancybox.helpers.overlay.defaults.closeClick=false;
它适用于你给的那个网站链接,你有任何代码? – waqasahmed 2009-09-01 18:06:44
正确,但在所有示例中,如果您单击它关闭的模式窗口之外。我希望它保持打开状态,除非用户点击X(没有其他地方)。 – Mike 2009-09-01 18:08:43