2008-10-30 1 views
47

몇 초 후에 요소와 모든 자식 요소를 페이드 아웃하고 싶습니다. 하지만 특정 시간 지연 후에 효과가 시작되도록 지정하는 방법을 찾지 못했습니다.지연 JQuery 효과

+1

요소의 자식이 요소로 페이드되지 않았을 때의 예를 들려 줄 수 있습니까? – tvanfosson

+1

죄송합니다, 실수는, 게시물을 업데이 트합니다 –

답변

77
setTimeout(function() { $('#foo').fadeOut(); }, 5000); 

5000은 밀리 초 단위로 5 초입니다.

+3

참고 이것은 Javascript의 기본 제공 setTimeout 기능을 사용하고 있습니다. –

+0

이것은 부분적으로 만 그의 질문에 대답한다고 생각합니다. –

+0

아이들이 #foo 엘리먼트 안에 있다면 너무 퇴색해야합니다 ... – swilliams

1

fadeTo() 메서드를 사용하고 5 초 지연을 설정하여 setTimeout을 사용하지 않아도됩니다.

$("#mainImage").pause(5000).fadeOut(); 

참고 :

$("#hideAfterFiveSeconds").click(function(){ 
    $(this).fadeTo(5000,1,function(){ 
    $(this).fadeOut("slow"); 
    }); 
}); 
+0

이 종류의 블록을 수행하는 것은 setTimeout에 비해 매우 많은 CPU를 사용합니다. 나는 이점을 보지 못했다. - 왜 원시 타이머가 필요하지 않습니까? – redsquare

43

내가이 일시 정지 플러그인 난 그냥

$.fn.pause = function(duration) { 
    $(this).animate({ dummy: 1 }, duration); 
    return this; 
}; 

전화를 같이

을 썼다 사용하면 콜백이 필요하지 않습니다.


편집 : 이제 jQuery 1.4. built in delay() 방법을 사용해야합니다. 나는 체크하지 않았지만 나는 나의 플러그인보다 더 '더 똑똑한'것이라고 생각한다.

+0

이렇게하면 많이 도움이됩니다!고맙습니다 :-) – Jesse

+0

jQuery가 일시 중지() 기능을 추가했는지 조심해 주시길 바랍니다. 하지만 이런 좋은 일을 추상화 한 것은 –

+0

누군가 콜백이 필요 없다는 것을 설명 할 수 있습니까? 왜 이런 일이 즉시 돌아 오지 않는지 잘 모르겠다. –

1

나는 지연을 체인에 추가 할 수 있도록 플러그인을 작성했습니다.

예를 들어 $ ('# div') .fadeOut(). 지연 (5000) .fadeIn(); // 요소를 페이드 아웃하고 5 초간 기다리십시오. 요소를 다시 페이드합니다.

애니메이션 해킹이나 과도한 콜백 체인을 사용하지 않고 간단하고 간단한 코드 만 사용합니다.

http://blindsignals.com/index.php/2009/07/jquery-delay/

19

은 이전에 당신은 당신이 이미 요소 불투명도 일이 있기 때문에 첫 번째 애니메이션은 아무것도되지 않습니다

$('#foo').animate({opacity: 1},1000).fadeOut('slow'); 

뭔가를 할 것이다, 그러나 그것은 시간의 양에 대한 일시 정지 것 .

jQuery 1.4에서는 위와 같은 해킹을 사용하지 않으므로 프레임 워크에 jQuery 1.4가 내장되어 있습니다. .

$('#foo').delay(1000).fadeOut('slow'); 

기능은 원래 jQuery.delay() 플러그인 가장 좋은 방법은 jQuery를 지연 방법을 사용하는 것입니다 http://www.evanbot.com/article/jquery-delay-plugin/4

11

과 동일합니다 :

$ ('#의 MY_ID') 지연 (2000). fadeOut (2000);

+2

jQuery 1.4 이상 –