jQuery的的fancybox - 防止收盘点击的fancybox以外(jquery fancy

2019-07-04 07:10发布

我使用的fancybox插件我的模态窗口。 好像不管我用什么样的选择,我不能阻止的fancybox模式窗口关闭,从当用户点击的fancybox模式窗口外(变灰区)。

有没有办法强制用户点击,我触发密切事件的X或一个按钮? 这似乎是所以我希望我只是读的例子错了,它应该很简单。

我试过hideOnContentClick: false ,但似乎并没有为我工作。 有任何想法吗?

Answer 1:

有是没有选择。 你将不得不更改源代码。

在jquery.fancybox-1.2.1.js你需要注释掉(或删除)线341在_finish方法:

//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);


Answer 2:

   jQuery(".lightbox").fancybox({
        helpers     : {
            overlay : {
                speedIn  : 0,
                speedOut : 300,
                opacity  : 0.8,
                css      : {
                    cursor : 'default'
                },
                closeClick: false
            }
        },
    });


Answer 3:

<script type="text/javascript">
  $(document).ready(function() {
    $("#your_link").fancybox({
      'hideOnOverlayClick':false,
      'hideOnContentClick':false
    });
  });
</script>                              


Answer 4:

我使用的fancybox 1.3.1,如果你想强制用户只需通过点击按钮来关闭该模式中,您可以在配置中指定:

<script type="text/javascript">
  $(document).ready(function() {
    $("#your_link").fancybox({
      'hideOnOverlayClick':false,
      'hideOnContentClick':false
    });
  });
</script>


Answer 5:

对于这个问题,请尝试这种方式

$("YourElement").fancybox({
 helpers: {
        overlay: { closeClick: false } //Disable click outside event
    }

希望这可以帮助。



Answer 6:

如果您使用的fancybox 1.2.6(像我的一个项目),我发现了选项hideOnOverlayClick。 你可以将它设置为false(如hideOnOverlayClick:假)。

我发现这个选项,同时探索基于由斯科特·道丁givn建议修改代码。



Answer 7:

我遇到同样的“问题”。 这为我工作:

$("#fancybox-overlay").unbind();


Answer 8:

以上都不是为我工作,所以我就写了的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
    });
});

希望这可以帮助 :)



Answer 9:

$("#fancybox-overlay").unbind()由@Gabriel这个问题给出解决方案的工作,除了我需要它加载其内容后,将其绑定到的fancybox,我不能马上解除绑定。 对于谁运行到这个问题的人,下面的代码解决了这个问题对我来说:

$('.fancybox').fancybox({'afterLoad' : function() {
    setTimeout(function() { $("#fancybox-overlay").unbind(); }, 400);}
});

在400毫秒的延迟得到它为我工作。 它曾与300毫秒,但是我不想冒险。



Answer 10:

设置closeClick自己的函数中的参数设置为false:

$(".video").click(function() {
    $.fancybox({
        width: 640,
        height: 385,
        helpers: { 
            overlay: {
                closeClick: false
            }
        }
    });

    return false;
});


Answer 11:

只需添加下面一行到你的功能,你不必改变jquery.fancybox-1.2.6.js的东西

callbackOnStart : function() {$("#fancy_overlay").bind("click","null");},


Answer 12:

可以防止花式盒应用这些设置关闭

 '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



Answer 13:

我不得不使用上述所有答案的组合,因为他们都包含错误。 当然,没有源代码的编辑是必要的。

就我而言,我想禁用覆盖点击关闭框,我的将被显示的fancybox内顺序问题的前进,所以我不希望用户不小心点击了覆盖失去他们的进步,但希望保持该功能在页面上的其他地方。

使用此来禁用它:

$(".fancybox-overlay").unbind();

使用此功能重新启用它:

$(".fancybox-overlay").bind("click", $.fancybox.close);


Answer 14:

只需使用下面的代码:

$(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>


Answer 15:

您可以设置在覆盖假默认closeClick。 拥有2.1.5版本为我工作。

$.fancybox.helpers.overlay.defaults.closeClick=false;


文章来源: jquery fancybox - prevent close on click outside of fancybox