Мне нужно знать, что 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 гаснет каждый раз, когда я открываю коробку. Я не уверен, когда они изменили этот параметр, но вы можете посмотреть источник любой версии, которую вы используете внизу, и посмотреть, какую функцию нужно вызывать.
EDIT
Я просто проверил на 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');}});
ОП говорит: «Я говорю о версии 1.3.0 RC2' – JFK
Если вы ищете способ определить, открыт ли fancybox или нет (вместо события, которое запускается при открытии ing fancybox), то с fancybox v2 вы можете использовать свойство $.fancybox.isOpen
. Он не документирован (по крайней мере, я не нашел ссылки), но он работает.
Пример:
if(!$.fancybox.isOpen) {
$.fancybox.open({
href: '#newsletter-campaign-popup',
height: 385,
width: 510,
type: 'inline'
});
}
В приведенном выше примере предотвращает открытие второго FancyBox, если один уже открыт.
Если у вас есть несколько Див о том, что вы используете для FancyBox, следующий код может быть лучше и более универсальное решение:
if ($('.fancybox-opened').length == 0) {
//there is no fancybox opened at all
}
Следует также отметить, что содержание FancyBox не может быть всегда пустым, даже если FancyBox закрыт.
$.fancybox.isOpen
(bool) указывает, открыт ли fancybox.
лучше и красиво, нужно ответить –
Да, но я боюсь, что он работает только с Fancybox 2 – tillsanders
Ха-ха, если вы можете видеть в источнике http://fancybox.net/dev/130/, они вызывают «onStart» и т. Д. Из второго параметра. Таким образом, это не сработает. Большое спасибо. Erik ^^ –