2012-04-21 69 views
0

我正在創建一個jquery傳送帶。該功能將圖像滑動到左側,並根據它們被移動到的位置來改變它們的類別。 (在你點擊一個名爲「增加」的按鈕之後)。它第一次正常工作,刪除左側圖像,將中間類別更改爲左側,右側中間,同時在右側添加新圖像並給予正確的位置類別。這裏是小提琴,如果你想看到它的行動:http://jsfiddle.net/6fwbS/25/Jquery類更改停止對第二個函數調用工作

函數第二次被調用,一切都搞砸了。一個新的圖像被追加,但它有不透明度,而類是.right_slot。任何想法我在這裏做錯了嗎?提前致謝。

function slide_img_left() { 

     var imgs = imgArr.length; 
     a++; 
     if (a >= imgs) { 
      a = 0; 
     } 

     b = a - 1; 
     c = a + 1; 

     if (b < 0) { 
      b = imgs - 1; 
     } 
     if (c >= imgs) { 
      c = 0; 
     } 

     var left = $('.left_slot'); var middle = $('.middle_slot'); var right = $('.right_slot'); 
     var newImg = imgArr[c][0]; 
     left.animate({ 
      opacity: 0, 
      left: '-=50px' 
     }, 300, function() { 
      left.remove(); 
     }); 


     middle.animate({ 
      left: '-=50px' 
     }, 300, function() { 
      middle.attr('class', 'left_slot'); 
      right.attr('class', 'middle_slot'); 
     }); 

     right.animate({ 
      left: '-=50px' 
     }, 300, function(){ 
      $("#basic_div").append(newImg); 
      newImg.attr('class', 'right_slot'); 
     }); 

     $("#varsDiv").html(" var b = " + b + " var a = " + a + " var c = " + c); 

    } 
+0

用'a'' b''''不能確切地說出那裏發生了什麼...... – elclanrs 2012-04-21 22:05:47

+0

不用擔心那部分......他們控制圖像存儲的陣列。他們進入當添加新圖像時會產生效果,例如在上面的情況下,它說var newImg = imgArr [c] [0]; – 2012-04-21 22:08:30

+0

MMm ...不知道它似乎可能是一個更好的方式來做到這一點。你可以發佈你的數組? – elclanrs 2012-04-21 22:15:33

回答

1
  • 你應該.clone()你的圖像或恢復您對自己的風格的變化。

    $("#basic_div").append(imgArr[b].clone()); 
    $("#basic_div").append(imgArr[a].clone()); 
    $("#basic_div").append(imgArr[c].clone()); 
    ... 
    function slide_img_left() { 
        ... 
        var newImg = imgArr[c].clone(); 
        ... 
    } 
    
  • 移動left_slot向左和隱藏它只是擰佈局。 middle_slot看不見了。

這是a working example的增加功能,淡出效果略有不同。

+0

老兄,你是我個人的英雄......你解決了我一次遇到的三個問題。謝啦!我不知道.clone – 2012-04-21 22:56:13