2012-12-02 26 views
0

我創建了一個幻燈片圖像包含在一個名爲「mainSlide」類的div,這完美的作品,但當我嘗試創建具有相同的類名「mainSlide」的另一個div,我沒有看到第二個div上的任何幻燈片效果只是第一個。功能不適用於所有div同級

<div class="mainSlide"> 
<img src="img/1.jpg" style="display:none;" /> 
<img src="img/2.jpg" style="display:none;" /> 
<img src="img/3.jpg" style="display:none;" /> 
</div> 
<br /><br /><br/><br /> 

<div class="mainSlide"> 
<img src="img/1.jpg" style="display:none;" /> 
<img src="img/2.jpg" style="display:none;" /> 
<img src="img/3.jpg" style="display:none;" /> 
</div> 


<script type="text/javascript"> 
$(document).ready(function() { 

slideShow(); 

function slideShow() { 
    $allSlides = $('div.mainSlide img').length; 
    $hiddenSlides = $('div.mainSlide img:hidden').length; 

    if ($hiddenSlides == $allSlides) { 
     $('div.mainSlide img:first').fadeToggle('slow', function() { slideShow(); }); 
    } else { 
     $('div.mainSlide').find('img:visible').delay(5000).fadeToggle('slow', 
      function() { 
       if ($(this).attr('src')==$('div.mainSlide img:last').attr('src')) { 
        $('div.mainSlide img:first').fadeToggle('slow', function() { slideShow(); }); 
       } else { 
        $(this).next('img').fadeToggle('slow', function() {slideShow();}); 
       } 
      }); 
    } 
} 

}); 
</script> 
+0

你的代碼不會神奇地工作與更多的實例化。最簡單的方法是使用一個變量代替主元素,並在每個().mainSlide上調用幻燈片。 – adeneo

回答

1

您的代碼是在假設只有一個幻燈片放映的情況下編寫的。

要處理多個幻燈片演示,您必須遍歷mainSlide元素,並在每個元素上執行slideShow函數中的所有操作。此外,在處理圖像時,必須將每個mainSlide元素用作範圍,以便代碼僅適用於該元素中的圖像。

$('div.mainSlide').each(function(i, slide){ 
    slideShow(slide); 
}); 

function slideShow(slide) { 

    $allSlides = $('img', slide).length; 

    // and so on... 

} 
+0

感謝Guffa,即時通訊在jQuery中的初學者,所以如果你不介意問,我不明白你的意思在幻燈片中的功能(我,幻燈片),因爲我試圖獲取它的價值,我得到了[對象HTMLDivElement]所以我不認爲這將涉及div下的圖像。請介意更多請解釋!或者你的意思是$('div.mainSlide img')。每個 – Maz

+0

@Maz:'slide'參數將是對每個'mainSlide'元素的DOM元素的引用。你想通過'mainSlide'元素循環來處理它內部的圖像元素,而不是直接處理所有的圖像元素,否則你仍然只有一個幻燈片。 – Guffa

+0

非常感謝你的魅力! – Maz