12

モーダル ウィンドウにFancyboxプラグインを使用しています。どのオプションを使用しても、ユーザーがfancyboxモーダルウィンドウの外側(グレー表示された領域)をクリックすると、fancyboxモーダルウィンドウが閉じるのを防ぐことはできないようです。

ユーザーに X または閉じるイベントをトリガーするボタンをクリックさせる方法はありますか? これは単純なはずなので、例を間違って読んでいることを願っています。

試してみましhideOnContentClick: falseたが、うまくいかないようです。何か案は?

4

15 に答える 15

23
   jQuery(".lightbox").fancybox({
        helpers     : {
            overlay : {
                speedIn  : 0,
                speedOut : 300,
                opacity  : 0.8,
                css      : {
                    cursor : 'default'
                },
                closeClick: false
            }
        },
    });
于 2012-05-28T13:12:56.177 に答える
11
<script type="text/javascript">
  $(document).ready(function() {
    $("#your_link").fancybox({
      'hideOnOverlayClick':false,
      'hideOnContentClick':false
    });
  });
</script>                              
于 2011-06-17T10:32:05.397 に答える
7

私は fancybox 1.3.1 を使用しています。ボタンをクリックすることによってのみユーザーにモーダルボックスを強制的に閉じさせたい場合は、構成で指定できます。

<script type="text/javascript">
  $(document).ready(function() {
    $("#your_link").fancybox({
      'hideOnOverlayClick':false,
      'hideOnContentClick':false
    });
  });
</script>
于 2010-06-16T13:26:20.253 に答える
6

この問題については、この方法をお試しください

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

お役に立てれば。

于 2014-10-22T06:37:10.807 に答える
5

Fancybox 1.2.6 を使用している場合 (私がプロジェクトに参加しているように)、オプション hideOnOverlayClick を見つけました。false に設定できます (例: hideOnOverlayClick: false)。

Scott Dowding による提案に基づいてコードを変更しようとしているときに、このオプションを見つけました。

于 2012-11-08T09:23:17.237 に答える
4

そのためのオプションはありません。ソースコードを変更する必要があります。

jquery.fancybox-1.2.1.js では、_finish メソッドの 341 行目をコメント アウト (または削除) する必要があります。

//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);
于 2009-09-01T18:42:07.030 に答える
3

私は同じ「問題」に遭遇しました。これは私のために働いた:

$("#fancybox-overlay").unbind();
于 2012-04-06T10:51:14.790 に答える
3

上記のどれもうまくいかなかったので、最新バージョンの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
    });
});

お役に立てれば :)

于 2012-09-13T19:50:44.427 に答える
2

$("#fancybox-overlay").unbind()@Gabriel によってこの質問に対して与えられた解決策は、コンテンツをロードした後にファンシーボックスにバインドする必要があり、すぐにバインドを解除できなかったことを除いて機能します。この問題に遭遇した人は、次のコードで問題が解決しました。

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

400ミリ秒の遅延により、私にとってはうまくいきました。300ミリ秒で動作しましたが、チャンスを逃したくありませんでした。

于 2012-09-20T23:48:47.197 に答える
1

関数に次の行を追加するだけで、jquery.fancybox-1.2.6.js を変更する必要はありません。

callbackOnStart : function() {$("#fancy_overlay").bind("click","null");},
于 2009-12-22T16:24:35.740 に答える