2011-10-17 3 views
3

Fancybox 윈도우에 문제가 있습니다. fancybox를 사용하여 내 페이지 (".popup"fancybox)에 숨겨진 div의 내용을 표시합니다. 그 내용에는 #exemple이라는 새로운 fancybox 내용에 대한 링크가 있습니다. 첫 번째 fancybox에서 링크를 클릭하면 두 번째 fancybox 콘텐츠 (iframe -이 작동)가로드됩니다. 하지만 사용자가 두 번째 fancybox의 닫기 버튼을 클릭하면 첫 번째 fancybox로 돌아가고 싶습니다.Fancybox on closed 이벤트의 Fancybox에 새 컨텐츠로드

나는 "onClosed"이벤트와 시도했지만 작동하지 않습니다 ...

그렇게 할 수있는 방법이 있나요?

도움을 주셔서 감사합니다. 여기

내가 사용하는 코드입니다 :

$("#exemple").fancybox({ 
    'width'    : '100%', 
    'height'   : '100%', 
    'titleShow'   : true, 
    'titlePosition'  : 'over', 
    'titleFormat'  : formatTitle, 
    'autoScale'   : false, 
    'centerOnScroll' : true, 
    'type'    : 'iframe', 
    'onClosed'   : function() { 
      alert('test'); 
      $(".popup").trigger('click'); 
     } 
}); 

$(".popup").fancybox({ 
    'autoScale'   : false, 
    'centerOnScroll' : true 
}); 

// and here is the HTML code to trigger the hidden div: 
<a style="font-weight: bold;" href=#data class=popup>our data</a> 

//and the HTML code of the link inside the hidden div that gets displayed in the fancybox: 
<a id=exemple title="xxx" href=xxx.php?id=xxx>link</a> 
+0

을 위해 잘 작동

(확장자를 사용)

내가 자동으로 fancybox를 호출 M : 우리는 "JS"를 넣어해야합니까? – armonge

답변

4

그것은 당신이 jsFiddle가에서 일해야했다하면 도움이되지만 먼저 setTimeoutonClosed 기능 코드를 포장하려고 할 것입니다. 0 시간이면 충분합니다.

'onClosed' : function() { 
    setTimeout(function(){ 
     $(".popup").trigger('click'); 
    }, 0); 
} 
+0

Waouu, 작동합니다! 고마워, 너 천재 야. fancybox 내용을 닫고 닫는 대신 업데이트하려고한다면 어떻게 될까요? – Samuel

+0

응? 그게 진짜로 효과가 있니? 이 개념 뒤에있는 개념은 무엇입니까? 나는 그것을 지금 해킹으로 본다. – Marnix

+0

정말 해킹이 아니며 ... 해결 방법입니다. 애니메이션이 완료되면 정리 함수가 호출됩니다. [jquery bug] (http://bugs.jquery.com/ticket/7157) 애니메이션 콜백이 조기에 호출되는데이를 해결하는 방법은 0 시간으로 setTimeout을 사용하는 것입니다. – Mottie

5

동일한 작업을하고 있었지만 onClosed가 작동하지 않았습니다. 많은 연구 끝에 버전 관리 문제가 있다는 것을 알아 냈고 이전 버전의 멋진 상자에서는 onClosed가 작동합니다. 나를 위해 일한 다른 방법은 onClosed 대신 beforeClose를 사용하는 것입니다.

는 '하는 BeforeClose': 함수() {경고 ('테스트')},

이것은 독자의 일부 도움이 될 수 있습니다.

+1

위의 코드를 복사하여 붙여 넣을 때 아포스트로피가 작은 따옴표로 복사되므로 자바 스크립트 오류를 ​​피하기 위해 아포스트로피를 다시 입력하십시오. –

+0

'afterClose'를 사용할 수도 있습니다. function() {alert ('test')}. 나는 그것이 같은 방식으로 작동하기를 바랍니다. – Ali

1
'onClosed'=> 'js:function() { alert("test") }', 

참고 : jsfiddle을 만들 수 있습니다 그것은 나를

관련 문제