我爲我的模態窗口使用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