我需要知道fancybox已經開放,允許或拒絕另一個函數啓動。如何確定fancybox何時開放?
內建函數fancybox像'onStart'或'onClosed'不起作用。
我談論版本1.3.0 RC2
我需要知道fancybox已經開放,允許或拒絕另一個函數啓動。如何確定fancybox何時開放?
內建函數fancybox像'onStart'或'onClosed'不起作用。
我談論版本1.3.0 RC2
您使用的版本顯然與文檔不匹配;我查看了源文件,看到了這些選項的名稱與在線文檔不同。我只是測試用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
我不知道你所說的內置函數的意思。 Fancybox具有調用用戶定義函數的回調函數(您必須自己創建函數)。 像:
function myClose()
{
alert('close');
}
function myStart()
{
alert('start');
}
$("a#single_image").fancybox({
'callbackOnClose': myClose,
'callbackOnStart': myStart
// etc, etc..
});
另外,您可以檢查fancy_content
div來看看它是否有內部的任何物件。 (如果有,則fancybox打開)。
if ($('#fancy_content:empty').length > 0)
{
// Is empty
}
這似乎爲我工作:
isLoaded : function(){
return $('#fancybox-content').html()!='';
}
嘗試使用方法
beforeLoad, // Before loading
afterLoad, // After loading
beforeShow, // Before changing in current item
afterShow, // After opening
此代碼做工精細
$(".fancybox").fancybox({beforeShow:function(){alert('blah');}});
OP說'我正在談論版本1.3.0 RC2' – JFK
如果您正在尋找一種方法來確定fancybox是否打開(而不是打開時觸發的事件然後從fancybox v2開始,你可以使用$.fancybox.isOpen
屬性。它沒有記錄(至少我沒有找到任何參考),但它的工作原理。
實施例:
if(!$.fancybox.isOpen) {
$.fancybox.open({
href: '#newsletter-campaign-popup',
height: 385,
width: 510,
type: 'inline'
});
}
上面的例子防止打開第二的fancybox如果一個已經打開。
如果您有多個div的,你正在使用的fancybox,下面的代碼可能會更好和更普遍的解決方案:
if ($('.fancybox-opened').length == 0) {
//there is no fancybox opened at all
}
還要注意的fancybox內容可能不總是空的,即使的fancybox關閉。
哈哈,如果你可以在http://fancybox.net/dev/130/的資源中看到,他們會從第二個參數中調用一個'onStart'等。這樣它不起作用。非常感謝Erik ^^ –