2012-04-21 42 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

相关问题