我使用的fancybox插件我的模态窗口。 好像不管我用什么样的选择,我不能阻止的fancybox模式窗口关闭,从当用户点击的fancybox模式窗口外(变灰区)。
有没有办法强制用户点击,我触发密切事件的X或一个按钮? 这似乎是所以我希望我只是读的例子错了,它应该很简单。
我试过hideOnContentClick: false
,但似乎并没有为我工作。 有任何想法吗?
我使用的fancybox插件我的模态窗口。 好像不管我用什么样的选择,我不能阻止的fancybox模式窗口关闭,从当用户点击的fancybox模式窗口外(变灰区)。
有没有办法强制用户点击,我触发密切事件的X或一个按钮? 这似乎是所以我希望我只是读的例子错了,它应该很简单。
我试过hideOnContentClick: false
,但似乎并没有为我工作。 有任何想法吗?
有是没有选择。 你将不得不更改源代码。
在jquery.fancybox-1.2.1.js你需要注释掉(或删除)线341在_finish方法:
//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);
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>
我使用的fancybox 1.3.1,如果你想强制用户只需通过点击按钮来关闭该模式中,您可以在配置中指定:
<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
}
希望这可以帮助。
如果您使用的fancybox 1.2.6(像我的一个项目),我发现了选项hideOnOverlayClick。 你可以将它设置为false(如hideOnOverlayClick:假)。
我发现这个选项,同时探索基于由斯科特·道丁givn建议修改代码。
我遇到同样的“问题”。 这为我工作:
$("#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
});
});
希望这可以帮助 :)
该$("#fancybox-overlay").unbind()
由@Gabriel这个问题给出解决方案的工作,除了我需要它加载其内容后,将其绑定到的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;
});
只需添加下面一行到你的功能,你不必改变jquery.fancybox-1.2.6.js的东西
callbackOnStart : function() {$("#fancy_overlay").bind("click","null");},
可以防止花式盒应用这些设置关闭
'showCloseButton'=>false, // hide close button from fancybox
'hideOnOverlayClick'=>false, // outside of fancybox click disabled
'enableEscapeButton'=>false, // disable close on escape key press
得到以下链接的fancybox设置
http://www.fancybox.net/api
我不得不使用上述所有答案的组合,因为他们都包含错误。 当然,没有源代码的编辑是必要的。
就我而言,我想禁用覆盖点击关闭框,我的将被显示的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。 拥有2.1.5版本为我工作。
$.fancybox.helpers.overlay.defaults.closeClick=false;