2012-06-18 1 views
4

나는 jQuery를의 지연 기능이 append 기능을 작동 할 수 없습니다. 뭐가 잘못 되었 니? 그것을 작동시키는 방법이 있습니까? 나는 setTimeout을 직접 사용하는 것을 피하고 싶습니다. 고객이 직접 따라 다니기가 쉽습니다. 아무 경험없이 직접 관리 할 것입니다.jQuery를 지연()

내 코드 :이 코드에서

$('#chatwindow').append('test').delay(2000).append('test'); 

, 내가 할 'testtest'동시에 인쇄, delay는 무시됩니다.

+1

두 번 테스트를 추가하려고합니까? –

+0

예, 테스트 문자열입니다, 두 번 추가해야합니다, 당신은 당신이 원하는 텍스트로 바꿀 수 있습니다. –

+1

당신은 처음부터 :)에서 검색 할 수 있습니다 - 여러 답변 jquery'에서 큐 '와 함께 작동하는 방법을 보여주는, 여기가 있지만 http://stackoverflow.com/questions/4544126/jquery-delay-not-working – Rifat

답변

22

delay(2000)은 기본적으로 fx 대기열을 대기열에 포함하기 때문에 이는 append()이 절대 포함되지 않기 때문입니다.

대신, 특히 queue() 기능을 사용하여에 append()을 대기 할 수 있습니다.

$('#chatwindow').append('test').delay(2000).queue(function (next) { 
    $(this).append('test'); 
    next(); 
}); 

여기에서 작동하는 예를 볼 수 있습니다. 그러나 http://jsfiddle.net/mj8qC/

, 나는 @ 아스키 석회의 의견에 동의; 나는 (에 StackOverflow에 묻는 질문에 경험) 많은 사용자에게 혼란을 delay() 달리, 자바 스크립트의 기본적인 부분으로 고객이 setTimeout을 이해하는 많은 기회가있을 것으로 예상.

FWIW,이 문제는 delay()의 사용에 a blog post를 작성하는 날을 트리거; 그것은이 대답보다 더 자세하게 들어가고, 다른 사람들을 위해 더 읽을 거리가 될 것입니다.

+3

정보의 거대한 조각이다. 확실히 최고의 대답. – Ohgodwhy

+2

+1 append 기본적으로 대기열에 저장되지 않고 애니메이션에 사용되지 않기 때문에 즉시 실행됩니다. 그러면 대기열에 추가됩니다. OP의 클라이언트에 대해'setTimeout'보다 이해하기가 더 쉬운 지 논란의 여지가 있지만,이 대답은 확실히 유익한 것입니다. – Paulpro

+0

굉장한 대답 매트, 큰 큰 큰 감사합니다! –

3

delay()은 아무 것도 사용할 수없는 까다로운 기능입니다. 효과 (주로 반환합니다. 자바 스크립트 실행 흐름을 차단하지 않습니다)에 주로 사용됩니다. the doc에서

:

그것은 표준 효과 큐 또는 사용자 정의 큐와 함께 사용할 수 있습니다

(당신이 FX를 사용하지 않는 경우 그래서 당신은 사용자 정의 대기열을 사용해야합니다 큐)

이 경우 setTimeout을 사용하십시오.

1

예. 지연으로부터의 반환은 즉각적입니다. 귀하의 코드에서 재판을 기다려야한다고 제안하는 것은 없습니다. 엔진이 대기하려면 setTimeout을 사용해야합니다.

관련 문제