본문 바로가기
프로그래밍/jQuery

delay(), 대기열의 함수 실행을 지연시키기

by zoo10 2012. 4. 16.

delay

원문 링크 http://api.jquery.com/delay/

.delay( duration [, queueName] )Returns : jQuery

개요 : 대기열(queue)에 대기중인 항목의 실행을 타이머를 세팅하여 지연 시킵니다.

  • .delay( duration [, queueName] )
  • duration 지연될 시간 (단위는 밀리세컨드).
  • queueName 큐명(queue name)

jQuery 버젼 1.4 에서, .delay() 는 함수의 실행을 지연 시킬수 있게 되었습니다. 기본적인 effects 함수들이나 사용자 정의 함수들에 대해서 사용할 수 있습니다. 단 대기중인 후속 이벤트만 지연됩니다. 예를 들어, 인자가 없는 형태의 함수 .show().hide() 들은 지연이 되지 않습니다. Only subsequent events in a queue are delayed; for example this will not delay the no-arguments forms of .show() or .hide() which do not use the effects queue.

시간값은 밀리세컨드 기준입니다. 높은값을 주면 오래 지연되고, 반대는 짧게 지연됩니다. 'fast''slow' 문자를 지원하는데 각각 200 와 600 밀리세컨드를 의미합니다.

예를 들어보겠습니다. .slideUp().fadeIn() 사이에 800 밀리세컨드 만큼 지연시키고 싶다면 아래와 같이 작성하면 됩니다.

$('#foo').slideUp(300).delay(800).fadeIn(400);

예 제  
두개의 div를 숨겼다 나타낼 때, 시간차를 줍니다.

<!DOCTYPE html>
<html>
<head>
  <style>
div { position: absolute; width: 60px; height: 60px; float: left; }
.first { background-color: #3f3; left: 0;}
.second { background-color: #33f; left: 80px;}
</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
<p><button>Run</button></p>
<div class="first"></div>
<div class="second"></div>
	
<script>
    $("button").click(function() {
      $("div.first").slideUp(300).delay(800).fadeIn(400);
      $("div.second").slideUp(300).fadeIn(400);
    });
</script>

</body>
</html>

미리보기

예제를 보니 바로 이해가 됩니다. 다들 그러시죠~~

 

실행을 지연 시킬 때 사용하면 좋겠습니다만 일반적인 함수들도 다 지연되는지는 테스트 해봐야 겠습니다.

그럼 즐프하세요.

※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.