2010-06-20 61 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(); 
    }); 
} 

我試圖調試與Chrome的JavaScript控制檯應用程序,但根據它,一切正常。 (沒有錯誤,DoAgain()被稱爲罰款等)

我真的被困在這裏 - 微調正確的方向將不勝感激。

+0

PS:當您將鼠標懸停在廣告上時,您應該停止廣告,以免人們意外地點擊錯誤的廣告。 – mpen 2010-06-20 00:51:40

+0

我從來沒有想過...感謝分享這個想法。 – 2010-06-20 00:52:40

回答

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()反正,你呢?在再次調用函數之前,動畫已經完成。

+0

好的,謝謝。我會遇到一個問題,那麼如果動畫正在進行中,我稱這個函數? – 2010-06-20 00:51:00

+1

@George:我認爲會發生什麼,這個動畫將排隊......所以它會在當前正在運行的動畫完成後進行。這個功能並不總是可取的。 – mpen 2010-06-20 00:54:57

+0

它不應該在我的情況下造成傷害。感謝您的幫助 - 感謝您將我指向jsfiddle.net - 我從來不知道該工具。 – 2010-06-20 00:56:24

0

只是覺得應該跟大家分享的解決方案:

顯然調用stop()只能在一個動畫項目完成,所以我插入如下:

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

...這僅在運行時停止動畫。

+0

http://jsfiddle.net/nT7e4/我不認爲這是問題。對沒有動畫的東西調用'stop()'應該沒有效果。 – mpen 2010-06-20 06:21:33

+0

@Mark:查看我現在頁面上的代碼 - 它似乎在工作。 – 2010-06-20 07:19:27