에 대한 내 완료; 애니메이션이 완료 되었습니까?
편집 --- 미안 나의 나쁜 나는 '내가'당신의 코드에 따라 루프
에 대한 내 완료; 애니메이션이 완료 되었습니까?
편집 --- 미안 나의 나쁜 나는 '내가'당신의 코드에 따라 루프
for
루프는 동기식이지만 애니메이션은 비동기식입니다. 재귀를 사용해야합니다.
var i = 0, j = 10;
(function fadeNext() {
if (i < j) {
$('#an-element-' + i++).fadeIn(fadeNext);
}
})();
감사합니다. 몇 가지 유사한 답변이 있지만 가장 간단합니다. 당신이 말한대로 루프는 이것에 적합하지 않습니다 (지연을 사용하지 않고) –
그 코드는 아름다움입니다. – Mattis
에서, 루프는 동일한 요소에 단지를 사라질 것이다 10 시간을 포함하지 않았다. http://api.jquery.com/fadeIn/이 같은
뭔가 (테스트하지) 작업을해야
var counter = 10;
function fadeIn(elem) {
$(elem).fadeIn('slow', function(){
if (counter > 0) {
fadeIn(elem); //up to you how you figure out which element to fade in
}
});
counter--;
}
//var elem = $('.something');
fadeIn(elem);
당신은 후에 코드를 실행할 수 있습니다 : 어떤 경우에
는 당신이 필요로하는 것은 fadein 방법의 콜백에 전화를 넣어하는 것입니다$("#foo").fadeIn("slow",function() {
alert("done");
});
를하지만 당신이 뭘하려는 건지 매우 명확하지 않다 : 함수에 배치하여 애니메이션 콜백 매개 변수로 전달. 같은 요소를 10 번 페이딩하고 있습니까?
혼란스럽게 죄송합니다. 코드를 약간 수정했습니다. 문제는 for 루프가 콜백을 기다리지 않고 계속 수행한다는 것입니다. 이 스 니펫을 사용하면 모든 요소가 동시에 사라지고 한 번에 10 개의 경고 상자가 표시됩니다. –
@matthew 죄송합니다. 이것은 콜백 구문의 예일뿐 아니라 열 개의 요소에 대한 완전한 해결책으로 의도되지 않았습니다. 허용 된 대답의 재귀 적 솔루션이 최적입니다. AFAIK –
이 시도 :
for (i = 0, j = 10; i < j; i++) {
$('.try').each(function() {
$(this).delay(1000).fadeOut().delay(1000).fadeIn();
});
}
당신은 지연 기능 내부의 지속 시간을 변경할 수 있습니다. Here is the jsFiddle.
당신은 모든 항목에 대한 고정 된 지연이있는 경우이 코드 줄 사용할 수 있습니다 :
$(this).fadeIn().delay(2000).fadeOut();
대신
$(this).fadeIn();
사용할 수
을 [콜백 ] (http://api.jquery.com/fadeIn/) – ExpExc