- queue 메서드는 좀 복잡하기도 하고 어렵기도 하지만 그렇게 많이 쓰지도(?) 않는 메서드 입니다.
- 위 예제에서 j_test 함수에 animate 메서드 4개와 queue 1개가 사용되었습니다.
- 함수의 애니메이션은 순차적으로 실행됩니다. 그리고 마지막으로 queue 에 있는 얼굴 바꾸기가 실행되죠.
- 애니메이션이 동시에 실행되지 않는점에 주목해야 합니다.
- 즉 4개의 애니메이션은 순차적으로 실행되며 실행이 예약되는 상태가 됩니다.
- queue 에 실행하고 싶은 코딩을 하면 그것역시 같이 예약됩니다.
이 예제에서는 아래처럼 했습니다.
.queue( function(){
$( this ).attr( 'src', '//superkts.com/img/huk1.gif' ).dequeue();
} )
- queue 사용후에 dequeue 를 반드시 해줘서 마감처리를 해주어야 합니다.
복잡하죠.. 다른 예제로 더 비교해 보겠습니다.
- dequeue 로 마감 처리를 하지않아서 예약이 종료된 상태가 되지않았습니다.
- 즉 아직 애니메이션이 진행중인 상황이 되버린 것이죠. 할일은 다했지만 마감처리가 안되었으니 안끝났다 인 겁니다.
- 그래서 이 예제는 버튼을 눌러도 한번밖에 실행되지 않습니다.
$( '.css_test img:not(:animated)' ) - 애니메이션 되지않는 이미지를 찾으라는 셀렉터에 해당되는게 없기 때문입니다.
- 하지만 예약의 갯수는 올라가네요. (이건 뭐지 ..)
- 제 설명이 정확하지 않을 수 있습니다. 어려워용...
- 길어졌지만 사실 단순 반복 코딩입니다.
var q = $( '.css_test img' ).queue( 'fx' );
if( q.length > 0 ) return;
- 그리고 위처럼 예약이 있다면 종료되도록 체크하는 처리를 했습니다.
- delay 상태에서 버튼을 누르니 예약이 추가되네요. (원하지 않는 작동)
- 이렇게 체크해두면 막을 수 있습니다. queue 의 갯수가 0 보다 크면 종료.
- 제이쿼리에서 애니메이션은 사실 간단한게 아닙니다. 깊이 알면 복잡하고 간단히 쓰면 쉽죠. (간단히 씁시당)
관련 메소드 : .animate() .delay()