web-dev-qa-db-ja.com

開いている「fancybox」内から関数の空想ボックスを閉じる

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

私は以下を試しましたが、役に立ちませんでした:

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

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

60
Phil Jackson

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

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

163
Matt Furlong

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

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

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

したがって、fnを追加することができます。

17
Justin Johnson

ファンシーボックスを閉じたい場合は、閉じれば十分です。

$('#inline').click(function(){
  $.fancybox.close();
});
11
Ravinder Singh

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

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

Fancybox内にリンクを配置して、その中にその関数を配置してみてください。

あなたはおそらくそれを読んでいたでしょうが、いずれにしても、 http://fancybox.net/api

おそらく必要なことの1つは、それが何であるかを理解するために各部分を分離することです。

9
marcelo-ferraz

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

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

わたしにはできる!

5
Affan Pathan

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

parent.jQuery.fancybox.close()
4
azeem

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

実際、withinからウィンドウを閉じる方法に関する元の質問への答えは、クリックイベントが要素にアタッチされていないという事実と関係があると思われます。 clickイベントが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();})}
});

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

3
niccol

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

$.fn.fancybox.close();

Fancyboxのソースコードから判断すると、それは彼らが内部でそれを閉じるのを処理する方法です。

2
Doug Neiner

$.fancybox.close()を、関数またはコールバックで、トリガーする場所に追加し、ajax呼び出しの終わりに!

うん.

1
zillaofthegods

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

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

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

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

1
Ghost8472

インラインタイプの解決策を見つけるために私のような時間を費やした人向け:window.setTimeout(function(){$。fancybox.close()}、10);

1
Albert Keil

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

1
karabo

はい、Virtuemartでは、クリックではリダイレクトできないため、ボタンではなく、CLOSe-continueショッピングである必要があります。

0
Alexey

ファンシーボックスでファンシーボックスを閉じるには、ファンシーボックスを閉じる関数にsetTimtoutを作成する必要があります

function close_fancybox(){
$.fancybox.close();
                     }
setTimeout(close_fancybox, 50);
0
user3395039

Iframe内では-parent。$。fancybox.close();

0