2011-09-14 159 views
0

我有一個幻燈片,它是用上一個和下一個按鈕手動控制的。它工作正常,但使用insertBeforeinsertAfter感覺馬虎,所以我想探索一些其他方法。相反,我在想:「如果這是最後一張圖片,請返回第一個+相反的方向後退。」jQuery如果幻燈片顯示問題

這是我的代碼,但是當它碰到最後一張圖片時我沒有得到想要的結果它應該在第一淡化,一切重新開始

Syntaxual if (slide == $('.z:last'))看起來腥我

測試地點:?http://brantley.dhut.ch/

感謝

這裏是我的JavaScript:

 $('#next').click(function() { 
      var slide = $('.z:visible'), 
       next = $('.z:visible').next(); 

      slide.fadeOut(400, function() { 
       slide.removeClass('active'); 
       if (slide == $('.z:last')) { 
        $('.z:first').addClass('active'); 
        bromance(); 
        $('.z:first').fadeIn(400); 
       } else { 
        next.addClass('active'); 
        bromance(); 
        next.fadeIn(400); 
       } 
      }); 
      return false; 
     }); 
+0

你正在經歷什麼行爲? – RoccoC5

+0

@ RoccoC5 - 當它到達最後(當幻燈片是.z:最後)時,它不會在第一個和所有垃圾中褪色。所以我認爲它的一些小的語法處理 – technopeasant

回答

0

試試這個:

if (slide[0] == $('.z:last')[0]) { ... 

jQuery的不回直接在DOM元素的引用,它返回一個類似數組的對象,其中每個數組元素都是與您所使用的選擇器相匹配的DOM元素。這意味着比較兩個選擇器的結果是比較兩個不同的類似數組的對象,即使它們包含相同的元素,它們也不會匹配。比較每個數組中的第一個元素(因爲在你的情況下,你只需要一個元素)。

0

你爲什麼不使用slide = $('.active')並嘗試:first-child代替:first

0

我會比較元素ids的相等性。

更改if (slide == $('.z:last'))if (slide.attr('id') === $('.z:last').attr('id'))

或者,您可以測試是否最後一張幻燈片是可見的,像這樣:

if ($('.z:last:visible')) { 
    // last slide is visible 
} 
+0

這是行不通的,因爲你比較的東西不是元素,它們是jQuery對象。看到我的回答... – nnnnnn

+0

@nnnnnn - 你是對的...我編輯我的帖子,通過'attr()'函數獲取id。 – RoccoC5

0

下一個= $( 'Z:可見')的next();

檢查以下條件並相應地指定下一個圖像。

if($('.z:last')){ 
    next = $(".z:first") 
} 
else{ 
    next = $('.z:visible').next(); 
}