2013-11-25 3 views
0

다음 코드가 있습니다. wrapper이 사라지고 사용자가 URL로 이동합니다. 그러나 그것은 단지 한 번 fadeOut 것 같습니다. 내 브라우저가 이미 페이지를 캐싱 /로드했기 때문에로드하는 것보다 빠릅니다.페이드 아웃 한 다음 새 페이지로 이동

fadeOut이 완료 될 때까지 window.location이 호출되지 않도록 할 수 있습니까? 내 현재 코드 : 변경

$('a').click(function (e) { 
    e.preventDefault(); 
    $('.wrapper').fadeOut(1000); 
     window.location = this.href; 

}); 

은 내가 콜백을 시도했습니다,하지만 난 this.href을 것 같은데요?

$('a').click(function (e) { 
     e.preventDefault(); 
     $('.wrapper').fadeOut(1000, function(){ 
        window.location = this.href; 
     }); 
    }); 

어떤 도움을 주시면 감사하겠습니다.

http://jsfiddle.net/tmyie/em2Km/1/

답변

6

window.location = this.href; 내부 this 더 이상 클릭 된 앵커 태그이지만 이벤트 핸들러로서 기능 부착하지 않는다.

는 시도 :

$('a').click(function (e) { 
    e.preventDefault(); 
    var href = this.href 
    $('.wrapper').fadeOut(1000, function(){ 
    window.location = href; 
    }); 
}); 
+0

괜찮아 오, 영리. 그래서 저는'this'의 현재 상태를 변수로 캡쳐했습니다. 함수 내의 다른 곳에서 사용할 수 있습니까? –

+0

예, 클릭 한 앵커 태그를 참조 할 때 click 이벤트에서이 상태를 캡처했습니다. 그런 다음이 값이 변경된 익명 콜백 함수 내에서 해당 값을 참조했지만 이전에는이 ​​변수가 닫혀 있기 때문에 여전히 액세스 할 수 있습니다. –

관련 문제