2011-10-17 19 views
3

Fancyboxのウィンドウに問題があります。私は、私のページ(以下の ".popup"ファンシーボックス)に隠されたdivの内容を表示するためにfancyboxを使用します。このコンテンツには、#exempleという新しいfancyboxコンテンツへのリンクがあります。最初のfancyboxのリンクをクリックすると、2番目のfancyboxのコンテンツ(iframe - これは問題ありません)が読み込まれます。しかし、ユーザーが第2ファンシーボックスの閉じるボタンを押すと、最初のファンシーボックスに戻りたいと思います。Fancybox on closedイベントのFancyboxに新しいコンテンツを読み込む

私は「onClosed」イベントにしようとしたが、それは動作しません...

はそれを行う方法はありますか?

ありがとうございました!ここで

は、私が使用するコードです:

$("#exemple").fancybox({ 
    'width'    : '100%', 
    'height'   : '100%', 
    'titleShow'   : true, 
    'titlePosition'  : 'over', 
    'titleFormat'  : formatTitle, 
    'autoScale'   : false, 
    'centerOnScroll' : true, 
    'type'    : 'iframe', 
    'onClosed'   : function() { 
      alert('test'); 
      $(".popup").trigger('click'); 
     } 
}); 

$(".popup").fancybox({ 
    'autoScale'   : false, 
    'centerOnScroll' : true 
}); 

// and here is the HTML code to trigger the hidden div: 
<a style="font-weight: bold;" href=#data class=popup>our data</a> 

//and the HTML code of the link inside the hidden div that gets displayed in the fancybox: 
<a id=exemple title="xxx" href=xxx.php?id=xxx>link</a> 
+0

のため正常に動作している

(拡張子を使用して)

私は自動的fancyboxを呼び出すM:私たちは、 "JS" を配置する必要がありますか? – armonge

答えて

4

それはあなたがjsFiddleから仕事をしていた場合には役立ちますが、最初のsetTimeoutonClosed機能コードをラップしようとするだろう。ゼロ時間で十分です。

'onClosed' : function() { 
    setTimeout(function(){ 
     $(".popup").trigger('click'); 
    }, 0); 
} 
+0

Waouu、それは動作します!ありがとう、あなたは天才です。 fancyboxの内容を更新して、それを再オープンするのではなく、何を解決したいのですか? – Samuel

+0

?それは本当に働いていますか?これの背後にあるコンセプトは何ですか?私は今、それをハックとして見ています。 – Marnix

+0

これは本当にハックではありません...それは回避策です。アニメーションが完了すると、クリーンアップ関数が呼び出されます。 [jquery bug](http://bugs.jquery.com/ticket/7157)があり、アニメーションコールバックが早期に呼び出されています。回避するには、ゼロ時間のsetTimeoutを使用します。 – Mottie

5

私は同じことをしていて、onClosedは機能していませんでした。多くの研究の後、私はいくつかの種類のバージョン問題とonClosedが古いバージョンのファンシーボックスで動作していることを理解しました。他のアプローチは、私のために働いたが、onClosedの代わりにbeforeCloseを使って次のようにしている。

「beforeClose」:関数(){アラート(「テスト」)}、

これは読者のいくつかのために有用であるかもしれません。

+1

これは私のために働いた+1、上記のコードをコピーして貼り付けるとアポストロフィが一重引用符としてコピーされるので、javascriptエラーを避けるためにアポストロフィを再入力してください。 –

+0

また、 'afterClose'を使うこともできます: function(){アラート( 'テスト')}。私はそれが同じように動作することを願っています。 – Ali

1
'onClosed'=> 'js:function() { alert("test") }', 

注:jsfiddleを作ることができるそれは私

関連する問題