2010-04-22 80 views
0

我已經建立了一個自定義的jQuery旋轉只使用基本動畫來旋轉3個Div(圖像)。我已經構建了該函數,然後使用它作爲回調函數重新啓動該函數。下面的代碼:jQuery旋轉不正確 - 太多遞歸

 
function ImageRotate() { 

    var CurrentFeature = "#container" + featureNumber; 

    $(CurrentFeature).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); 

    var featureNumber2 = featureNumber-1; 
    if (featureNumber == 1) {featureNumber2=3} 
    var CurrentFeature2 = "#container" + featureNumber2; 
    $(CurrentFeature2).stop(false, true).delay(4500).animate({'top' : '0px'}, 3000); 
    $('#container2').stop(false, true).delay(4500).animate({'top' : '-330px'}, 25); 

    var featureNumber3 = featureNumber+1; 
    if (featureNumber == 3){featureNumber3=1} 
    var CurrentFeature3 = "#container" + featureNumber3; 
    $(CurrentFeature3).stop(false, true).delay(7500).animate({'top' : '0px'}, 3000); 
    $(CurrentFeature2).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); 
    $(CurrentFeature).stop(false, true).delay(4500).animate({'top' : '-330px'}, 25); 

    if (featureNumber ==1) {featureNumber=3} else{featureNumber--}; 
    $(CurrentFeature).stop(false, true).delay(7500).animate({'top' : '0px'}, 3000); 
    $(CurrentFeature3).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); 
    $(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate()); 
}; 

值得一提的是再次調用函數時我也試圖使)稱爲ImageRotate2另一個函數(;它也做了同樣的事情。它循環,但我得到各種funkiness。

編輯:我也在回覆中嘗試了一些答案,他們都讓我每秒都有遞歸錯誤。

回答

1

無論是傳遞函數(當你把括號後,它實際上是調用它,然後有和沒有通過對它的引用)或嵌套它的函數定義,像這樣:

$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,function {ImageRotate()}); 

編輯:

而不是調用函數,嘗試用setTimeout的排隊起來:

..., function() { window.setTimeout(ImageRotate, 1000); }); 
+0

現在它將這個錯誤扔到螢火蟲「丟失(在形式參數 [Break on this error] $(CurrentFeature2).stop(false,true).... px'}之前, 25,函數{ImageRotate2()}); \ n「 – 2010-04-22 16:11:39

+0

我的不好,需要()函數之後,在開始之前{ – 2010-04-22 17:34:54

+0

好吧,它擺脫了我評論的錯誤,但現在它每秒拋出遞歸錯誤 – 2010-04-22 17:47:15

1

改變這一行:

$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate()); 

$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate); 

您需要的句柄傳遞給函數的調用函數的不結果。 =)

+0

不幸的是,這並沒有辦法。它每秒不斷給我遞歸錯誤:[ – 2010-04-22 17:50:35

0

我不理解爲什麼它不會給你遞歸ERR ORS。似乎沒有任何實例停止自我調用,除非代碼只是讓我的眼睛流血。

如果您沒有辦法讓代碼停止傳播,它將返回一個錯誤。