0

onClosed 関数内から、fancybox を閉じるためにクリックされた要素の ID を特定したいと考えています。ボックスがどのように閉じられたかに応じて、異なる onClosed 動作を提供する必要があります。

ファンシーボックス内に、ユーザーがクリックしてボックスを閉じて登録ページに移動できるボタンがあるとします。

<button id="user-register" onclick="parent.jQuery.fancybox.close();parent.location.href='/user/register';"><h3>Sign Up <strong>Now!</strong></h3></button>

そして、ボックスを開いた私の fancybox 呼び出しには、通常は親をリロードする onClose 関数があります。

'onClosed': function() { 
        /*mytest = $('#fancybox-content iframe').contents().find('#user-register');
        console.log(mytest);*/
        if ($('body').hasClass('not-logged-in')) { 
          parent.location.reload(true);
        }  
      } 

親をリロードする理由は、ユーザーがファンシーボックス内にログインする場合があり、ユーザーがログインしたことを親に反映させたいためです。ただし、ユーザーが登録ボタンをクリックした場合、ユーザーが /user/register に送信されないためです。私の onClosed 関数で、コメントアウトされたコードで #user-registered ボタンにアクセスする方法を見つけようとしていることがわかります。ボックスを閉じるためにクリックされた要素である場合、onClosed関数でその長さがゼロにならないことを望んでいましたが、実際には、このコンテキストではその長さは常にゼロです。おそらく、onClosed関数のときにボックスがすでに閉じられているためです実行します。onClosed関数で利用できるarguments変数も調べてみたのですが、ボックスを開いた要素を参照しており、

また、close() 関数に引数を渡して、onClosed 関数で何らかの形で使用できるかどうかを確認してみました (例: close('user-register'))。ただし、その引数は利用できないようです。

onClosed 関数内からボックスがどのように閉じられたかを知る方法はありますか?

ありがとうございました

4

1 に答える 1

0

親ページで (グローバル スコープで) 変数を宣言します。これは、parent.varname を使用してファンシーボックス ページでアクセスできます。ボタンのこの変数 onclick の値、または fancybox が閉じる前に発生するイベントを設定します。次に、親ページで、fancybox の OnClosed イベントでこの変数の値を確認できます。お役に立てれば。

于 2012-05-25T14:27:57.303 に答える