2010-06-20 5 views
0

루프를 적극적으로 거부하는 jQuery 애니메이션이 있습니다. 애니메이션을 통해 한 번 재생 된 다음 종료됩니다. 여기왜이 jQuery 애니메이션 루프가 무한히 반복되지 않습니까?

그것이 : 여기 http://stackoverflow.quickmediasolutions.com/stackad/fancy.html

코드의 관련 섹션 :

function DoAgain() 
{ 
    $('#block').stop().css('marginLeft','0px'); 
    var width = ($('#block').width())/2; 
    var length = (1000 * num_ads)/document.getElementById('speed').value; 
    $('#block').animate({marginLeft: '-=' + width},length,'linear', 
     function() { 
     DoAgain(); 
    }); 
} 

내가 크롬 자바 스크립트 콘솔 응용 프로그램을 디버깅하려고하지만,에 따라, 모든 작동합니다. (오류 없음, DoAgain()은 괜찮다고합니다.)

나는 정말로 여기에 갇혀 있습니다. 올바른 방향으로 조금 움직여 주시면 감사하겠습니다.

+0

추신 : 광고를 마우스로 올려 놓으면 사람들이 실수로 잘못된 것을 클릭하지 않도록해야합니다. – mpen

+0

나는 그 생각을 결코 생각하지 못했습니다 ... 아이디어를 공유해 주셔서 감사합니다. –

답변

1

정말 이유는 모르지만 귀하의 stop()은이를 위반 한 것으로 보입니다. 자, 내가 당신을 위해 그것을 해결 :

http://jsfiddle.net/34dvF/3/

function DoAgain() 
{ 
    $('#block').css('marginLeft','0px'); 
    var width = $('#block').width()/2; 
    var length = (1000 * num_ads)/$('#speed').val(); 
    $('#block').animate({marginLeft: '-=' + width}, length, 'linear', DoAgain); 
} 

당신은 정말 당신은 어쨌든 stop()을 할 필요가 없다? 함수가 다시 호출되기 전에 애니메이션이 이미 완료되었습니다.

분명히 stop()는 애니메이션 항목을 수행 할 수 있습니다 전화, 그래서 다음에 삽입 :

$('table:animated').stop(true,false); 

...이

+0

알겠습니다. 고마워요. 애니메이션이 현재 진행 중이고이 함수를 호출하는 경우 문제가 발생합니까? –

+1

@George :이 애니메이션이 대기열에 들어가는 것이 어떻게 될지 생각합니다 ... 그래서 현재 실행중인 애니메이션이 끝난 후에 진행될 것입니다. 이 기능이 항상 바람직한 것은 아닙니다. – mpen

+0

제 경우에는 해를 입혀서는 안됩니다. 도움을 주셔서 감사합니다. jsfiddle.net을 가리켜 주셔서 감사합니다. 저는 그 도구에 대해 전혀 알지 못했습니다. –

0

그냥 내가 여러분 모두와 함께 해결책을 공유하고자합니다 애니메이션이 실행 중일 때만 멈 춥니 다.

+0

http://jsfiddle.net/nT7e4/ 나는 그게 문제라고 생각하지 않습니다. 움직이지 않는 것에'stop()'을 호출해도 효과가 없습니다. – mpen

+0

@ 마크 : 제가 지금 페이지에있는 코드를 확인하십시오 - 작동하는 것 같습니다. –

관련 문제