2011-02-25 45 views
2

嘗試使用jQuery並嘗試製作一個可以旋轉三個圖像的小型幻燈片。這裏是我的HTML:在jQuery中使用回調函數的無限遞歸

<div id="slideShow"> 
    <img src="images/slides/slide1.jpg" width="520" height="230" /> 
    <img src="images/slides/slide2.jpg" width="520" height="230" /> 
    <img src="images/slides/slide3.jpg" width="520" height="230" />  
</div> 

而這裏的腳本:

$(function() 
{ 
    var $slides = $('#slideShow img').hide(), 
    slideIndex = 0; 

    slideTransition = function() 
    { 
     slideIndex++; 
     (slideIndex == $slides.length) ? slideIndex = 0: null; 
     $slides.eq(slideIndex).fadeIn(3000); 
     $slides.eq(slideIndex).fadeOut(3000,slideTransition); 
    } 

    $slides.eq(0).fadeIn(3000); 
    $slides.eq(0).fadeOut(3000, slideTransition); 

}); 

這實際工作正常,但我的直覺告訴我,在具有無限遞歸是件壞事。有關如何更好地做到這一點的任何建議?

回答

8

你在做什麼不是遞歸。當動畫開始時,您的通話返回。然後,一個計時器事件處理程序調用你的方法。你的解決方案很好。

+0

啊,所以語句被執行,但回調不被調用,直到動畫完成? – 2011-02-25 04:44:04

+0

這是正確的。 – Jacob 2011-02-25 04:46:18

0

要刪除無限遞歸和運行庫,您可以使用jquery的「animate」函數。這裏的參考文件是。