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 関数内からボックスがどのように閉じられたかを知る方法はありますか?
ありがとうございました