62

こんにちは、fancyBox が内部から開いているときに、fancyBox を閉じることができるようにしたいと考えています。

私は次のことを試しましたが、役に立ちませんでした:

function closeFancyBox(html){
    var re = /.*Element insert complete!.*/gi;
    if( html.search( re ) == 0 ){
        $.fancybox.close();
        //alert("foo");
    }
}

foo はダイアログで開きますが、閉じません。ヒントはありますか?

4

16 に答える 16

167

これを試してください: parent.$.fancybox.close();

Fancybox API ドキュメントを参照してください。

于 2010-06-25T14:21:39.167 に答える
17

http://fancybox.net/faqによると

  1. FancyBox を他の要素から閉じるにはどうすればよいですか? ?

$.fn.fancybox.close()onClick イベントを呼び出すだけです

したがって、に追加できるはずですfn

于 2009-12-01T22:19:44.507 に答える
12

ファンシーボックスを閉じたいだけなら、閉じれば十分です。

$('#inline').click(function(){
  $.fancybox.close();
});
于 2011-06-09T09:54:53.123 に答える
9

.fnを入れても無駄です。プロトタイプを参照します。
あなたがする必要があるのは$.fancybox.close();です。

問題は、jsから別のエラーが発生している可能性があるということです。
画面にエラーがありますか?
あなたのfancyboxとjqueryは最新のリリースですか?jqueryは現在1.4.1にあり、fbは1.3にあります

ファンシーボックス内にリンクを配置して、その関数をその中に配置してみてください。

あなたはおそらくそれを読んだことがあるでしょうが、いずれにせよ、 http://fancybox.net/api

おそらくあなたがしなければならないかもしれない一つのことは、それが何であるかを理解するために各部分を分離することです。

于 2010-02-11T11:08:44.783 に答える
5

閉じるボタンの ID を取得し、その ID でクリック イベントを呼び出すことで、fancybox を閉じることもできます。

<input type='button' value='Cancel' onclick='javascript:document.getElementById("fancybox-close").click();' />

わたしにはできる!

于 2013-02-14T11:44:33.050 に答える
4

私は長い間同じ問題を抱えていましたが、以下のコードで解決策を得ました。使ってください

parent.jQuery.fancybox.close()
于 2012-07-05T11:43:38.147 に答える
3

古いスレッドのビットですが...

実際、ウィンドウ内からウィンドウを閉じる方法に関する元の質問に対する答えは、クリックイベントが要素にアタッチされていないという事実と関係があるのではないかと思います。クリックイベントがdocument.readyに添付されている場合、fancyboxが新しいウィンドウを作成するときにイベントは添付されません。

新しいウィンドウが表示されたら、クリックイベントを再適用する必要があります。おそらくこれを行う最も簡単な方法は、onComplete機能を使用することです。

これは私のために働きます:

$(".popup").fancybox({
    'transitionIn'  :   'fade',
    'transitionOut' :   'elastic',
    'speedIn'       :   600, 
    'speedOut'      :   400, 
    'overlayShow'   :   true,
    'overlayColor'  :   '#000022',
            'overlayOpacity'  : 0.8,
            'onComplete' : function(){$('.closer').click(function(){parent.$.fancybox.close();})}
});

実際、少し考えてみると、「クリック」や「バインド」ではなく「ライブ」でも同様に機能する可能性があります。

于 2011-05-12T14:59:19.793 に答える
2

代わりにこれを使用して閉じます。

$.fn.fancybox.close();

ファンシーボックスのソースコードから判断すると、それが内部的にそれを閉じる方法です。

于 2009-12-01T22:22:09.423 に答える
1

これに苦労した後、$ を jQuery に置き換えるだけで機能するソリューションを見つけ、jQuery.fancybox.close()それを onClick のインライン スクリプトにしました。親から呼び出すことができるかどうかを確認します

于 2011-11-02T10:35:41.490 に答える
1

$.fancybox.close()関数やコールバック、ajax 呼び出しの最後など、トリガーしたい場所に追加してください。

うふふ。

于 2016-04-11T19:01:30.690 に答える
1

私は最終的に使用しました:

<script>parent.$("#fancy_close").click();</script>

私たちが持っているファンシーボックスのバージョンには、私が呼び出すための $.fancybox.close() 関数がないと思います:(

参考までに、PHP での処理が完了したので、ページでファンシーボックスを閉じたいだけでした。

于 2014-11-04T07:30:46.343 に答える
1

私のようにインライン型の解決策を見つけるのに何時間も費やした人のために: window.setTimeout(function(){$.fancybox.close()},10);

于 2013-04-13T19:46:12.280 に答える
0

iframe 内で -parent.$.fancybox.close(); を使用します。

于 2013-04-04T08:04:39.500 に答える
-1

ajax fancybox ウィンドウを閉じるには、次のようにします。

onclick event -> $.fancybox.close();
return false;  
于 2017-07-22T04:04:22.740 に答える