2010-01-24 7 views
9

다른 기능을 시작하거나 중지 할 수 있도록 fancybox가 열려 있는지 확인해야합니다.fancybox가 열려 있는지 확인하는 방법은 무엇입니까?

빌드 인 기능 'onStart'또는 'onClosed'와 같은 Fancybox가 작동하지 않습니다.

난 당신이 내장 함수에 의해 무슨 뜻인지 모르겠어요 버전 1.3.0 RC2

답변

10

사용중인 버전이 문서와 분명히 일치하지 않습니다. 원본을보고 옵션의 이름이 온라인 문서와 다른 것을 보았습니다. 난 그냥 1.3RC2와 다음 테스트 :

$(document).ready(function() { 

    function myStartFunction() { alert('fancy box opened'); } 

    $("a#inline").fancybox({ 
     'onStart': myStartFunction 
    }); 
}); 

당신이 찾고있는 옵션은 'ONSTART'입니다 - myStartFunction의 경고가 나는 상자를 열 때마다 꺼집니다. 그들이 옵션을 변경 한시기는 확실하지 않지만 맨 아래에서 사용하는 버전의 소스를보고 옵션을 호출해야하는지 확인할 수 있습니다.

편집

난 그냥 더블 v1.2.5에 확인 - 내가 사용하는 버전을 - 그리고 콜백가 실제로 다른 이름이 지정됩니다. 내가 말했듯이 callbackOnStart하지 1.3

+0

하하, http://fancybox.net/dev/130/의 소스에서 볼 수 있다면 두 번째 매개 변수에서 'onStart'등을 호출합니다. 그렇게하면 작동하지 않습니다. 고마워요 에릭 ^^ –

3

에 대해 이야기하고있다. Fancybox는 사용자 정의 함수 (사용자가 직접 작성해야 함)를 호출하는 콜백을 가지고 있습니다. 등 :

function myClose() 
{ 
    alert('close'); 
} 

function myStart() 
{ 
    alert('start'); 
} 

$("a#single_image").fancybox({ 
    'callbackOnClose': myClose, 
    'callbackOnStart': myStart 
// etc, etc.. 
}); 

또는 당신은 내부에 아무것도가 있는지 확인하기 위해 fancy_content 사업부를 확인할 수 있습니다. (있는 경우 fancybox가 열려 있음).

if ($('#fancy_content:empty').length > 0) 
{ 
    // Is empty 
} 
2

이 나를 위해 작동하는 것 같다, 1.25와 함께 작동하지만 :

 isLoaded : function(){ 
      return $('#fancybox-content').html()!=''; 
     } 
8

봅니다 방법

beforeLoad, // Before loading 
afterLoad, // After loading 
beforeShow, // Before changing in current item 
afterShow, // After opening 

미세이 코드가 작동을 사용하는

$(".fancybox").fancybox({beforeShow:function(){alert('blah');}}); 
+0

OP는'내가 말하는 버전 1.3.0 RC2' – JFK

4

fancybox가 열려 있는지 여부를 확인하는 방법을 찾고 있다면 (열린 상태에서 해고되는 이벤트 대신) fancybox)를 사용하면 fancybox v2에서 $.fancybox.isOpen 속성을 사용할 수 있습니다. 그것은 문서화되지 않았습니다 (적어도 나는 어떤 참고 문헌도 찾지 못했지만).

예 :

if(!$.fancybox.isOpen) { 
    $.fancybox.open({ 
     href: '#newsletter-campaign-popup', 
     height: 385, 
     width: 510, 
     type: 'inline' 
    }); 
} 

하나가 열려있는 경우 상기 제 fancybox를 여는 것을 방지 예.

1

당신은 당신이 더 나은 더 보편적 인 해결책이 될 수있는 코드를 다음, fancybox에 사용되는 여러 사업부의의가있는 경우 :

if ($('.fancybox-opened').length == 0) { 
    //there is no fancybox opened at all 
} 

참고 또한 fancybox 내용 fancybox가 닫혀있는 경우에도 항상 비어하지 않을 수 있습니다.

12

$.fancybox.isOpen (bool)은 fancybox가 열려 있는지 여부를 나타냅니다.

+0

더 좋고 예쁜 해결책, 대답해야한다 –

+1

예,하지만 Fancybox 2에서만 작동합니다. – tillsanders

관련 문제