2012-07-23 4 views
-2

점차적으로 나타나는 일부 문자를 원하므로이 스크립트를 작성했습니다. 그러나 지연은 전혀 실행되지 않는 것 같습니다. 결과를 변경하지 않고 수천 개로 만들려고했습니다. 내가 그리워?jQuery 문에서 지연 없음

$(document).ready(function() { 

    var 
     i, 
     d = [500, 300, 600, 1000], 
     t = "String"; 

    $("body") 
     .delay(flashDuration[0]) 
     .animate({ backgroundColor: "#888888" }, d[1]) 
     .animate({ backgroundColor: "#222222" }, d[2]) 
     .animate({ backgroundColor: "#F8ECC2" }, d[3], null, function() { 
      for (i = 0; i < t.length; i++) 
       $("<span>" + t.substr(i, 1) + "</span>") 
        .addClass("hidden") 
        .delay(i * 2000) /* this delay doesn't execute */ 
        .addClass("visible") 
        .appendTo("#floatingName"); 

     }); 
}); 

지속 기간과 제목이 내 머리를 물지 마십시오. 필자는 모든 프로그래머가 비밀스럽고 자명하지 않고 짧은 변수 이름을 좋아하기 때문에 이름을 축약했습니다. 권리? 진지하게, 나는 포장을 피하려고 노력했다.

또한 jsFiddle here에 게시하려고했으나 예제가 화면을 깜박이지 않고 지연을 올바르게 실행하지 않습니다.

답변

2

내가 아는 한, jQuery는 여전히 컬러 애니메이션을 기본적으로 지원하지 않습니다.

여기에 포함 된 컬러 애니메이션 확장자를 가진 jsFiddle에 코드의 버전입니다 :

http://jsfiddle.net/8XUpL/4/

+0

나는 코드에 차이가 없음을 본다. 그러나 나는 다른 행동을 본다. 미쳤나요?!(그리고 예, 나는 잊어 버린 jQuery UI를 사용하고 있습니다. 여전히 지연에 관한 주요 질문이 남아 있습니다.) –

+1

jootfriend에서 mootools를 프레임 워크로 선택했습니다. 나는 jsFiddle에 그다지 중요하지 않지만 중요한 차이점 중 하나라고 생각합니다. –

+0

@MrAzulay가 말한 것처럼 jQuery를 선택하지 않았습니다. –

2

animate()의 두 번째 매개 변수는 애니메이션이 애니메이션을 적용해야하는 시간입니다. 애니메이션 시작 전 시간이지. 체인의 모든 animate() 사이에 delay()를 넣어야합니다. 또한 애니메이션을 만들기 위해 애니메이션()의 큐 옵션을 사용할 수

$("body") 
    .delay(flashDuration[0]) 
    .animate({ backgroundColor: "#888888" }).delay(d[1]) 
    .animate({ backgroundColor: "#222222" }).delay(d[2]) 

등등은 ... 대신 서로 후 즉시 실행의 스택.

모든 실행에게 그것은 단지 애니메이션 큐의 다음 항목을 지연 스크립트를 지연하지 않습니다

지연 편집 여기 http://api.jquery.com/animate/


설명했다. 그래서 이런 식으로 사용할 수 없습니다. 대신 setTimeout을 사용해야합니다.

http://api.jquery.com/delay/

.delay() 메소드는 대기 jQuery를 효과 사이의 지연에 대한 최선이다. 제한적이기 때문에 예를 들어 지연을 취소 할 수있는 방법을 제공하지 않습니다. -delay()는 특정 사용에 더 적합 할 수있는 JavaScript의 기본 setTimeout 함수를 대체하지 않습니다. 사례.

+0

아니, 그 부분이 권리입니다. 내 질문에 대한 지연을 보여줄 때, 깜박이는 (나는 그것을 원하는대로 발생) 않습니다 보여줍니다. 나는 스팬의 글자를 잠시 후에 다시 볼 수있게하고 싶다. 지금 당장은 순간적으로 일어난다. –

+0

오, 죄송합니다. 저는 방금 변수 d (지연 시간)를 호출했기 때문에 그 이유를 원하지 않는다고 가정했습니다. 업데이트 된 답변 확인 _^ –

+0

하하, 나는 문제가있다. 변수 이름은 실제로 깜박일 때와 문자가 표시되기 전에 지연됩니다. 그때 나는 콜백 함수에서 모든 것을 밀어 붙일 수 있지만 이름을 유지한다는 것을 깨달았다. 죄송합니다. 그럼에도 불구하고 지연이 올바른 선택 인 것으로 보입니다. 클래스 이름을 변경하고 일정 시간 동안 기다렸다가 클래스 이름을 다시 변경하거나 실제로 추가하려고합니다. –