他の機能の開始を許可または拒否するために、fancybox が開かれていることを知る必要があります。
「onStart」や「onClosed」などの組み込み関数 Fancybox が機能しません。
私はバージョン1.3.0 RC2について話している
他の機能の開始を許可または拒否するために、fancybox が開かれていることを知る必要があります。
「onStart」や「onClosed」などの組み込み関数 Fancybox が機能しません。
私はバージョン1.3.0 RC2について話している
$.fancybox.isOpen
(ブール値) は、fancybox が開いているかどうかを示します。
使用しているバージョンは明らかにドキュメントと一致しません。ソースを調べたところ、オプションの名前がオンライン ドキュメントと異なっていることがわかりました。1.3RC2 で以下をテストしました。
$(document).ready(function() {
function myStartFunction() { alert('fancy box opened'); }
$("a#inline").fancybox({
'onStart': myStartFunction
});
});
お探しのオプションは「onStart」です。ボックスを開くたびに、myStartFunction のアラートがオフになります。いつオプションが変更されたのかはわかりませんが、下部にある使用しているバージョンのソースを見て、オプションの名前を確認してください。
編集
v1.2.5(私が使用しているバージョン)を再確認したところ、コールバックの名前が実際に異なります。callbackOnStart は 1.25 で動作しますが、私が言ったように、1.3 では動作しません
メソッドを使ってみる
beforeLoad, // Before loading
afterLoad, // After loading
beforeShow, // Before changing in current item
afterShow, // After opening
このコードは正常に動作します
$(".fancybox").fancybox({beforeShow:function(){alert('blah');}});
ファンシーボックスが開いているかどうかを判断する方法を探している場合 (ファンシーボックスを開いたときに発生するイベントの代わりに)、fancybox v2 の時点で$.fancybox.isOpen
プロパティを使用できます。文書化されていません (少なくとも参考文献は見つかりませんでした) が、動作します。
例:
if(!$.fancybox.isOpen) {
$.fancybox.open({
href: '#newsletter-campaign-popup',
height: 385,
width: 510,
type: 'inline'
});
}
上記の例では、ファンシーボックスが既に開いている場合、2 番目のファンシーボックスが開かないようにしています。
組み込み関数の意味がわかりません。Fancybox には、ユーザー定義関数 (自分で作成する必要があります) を呼び出すコールバックがあります。お気に入り:
function myClose()
{
alert('close');
}
function myStart()
{
alert('start');
}
$("a#single_image").fancybox({
'callbackOnClose': myClose,
'callbackOnStart': myStart
// etc, etc..
});
または、div をチェックして、fancy_content
内部に何かがあるかどうかを確認することもできます。(ある場合は、fancybox が開いています)。
if ( $('#fancy_content:empty').length > 0 )
{
// Is empty
}
これは私のために働くようです:
isLoaded : function(){
return $('#fancybox-content').html()!='';
}