2010-07-01 43 views
0

嘿我试图做一种滑块,但有问题得到循环'重置'。这个想法是让元素动画淡化不透明,并在完成后隐藏它们,以便在循环重置后不会触发“.is(:visible)”。但是,回调函数正在影响将其不透明度设置为“1”且在错误时间的元素。我猜这是简单的,我不知道动画,因为我是一个jQuery newb的一点。Jquery动画回调影响错误的元素

$('a#galleryArrow').bind('click', function(){ 

     wrapper.children().slice(imageSet,(imageSet + 5)).animate({opacity: 0}, function() {$(this).hide();}); 

     if (wrapper.children(':last-child').is(':visible')) { imageSet = 0; } 
     else { imageSet = imageSet + 5; } 

     wrapper.children().slice(imageSet, (imageSet + 5)).css({display: 'block'}).animate({opacity: 1}); 
     wrapper.animate({left: -(imageSet * 104)});   

     return false; 

}); 
+0

显示定义'wrapper'的代码 – 2010-07-01 18:30:32

+0

对不起:var wrapper = $('div#imagebar ul');这是对的? – Abe 2010-07-01 18:48:20

回答

0

首先尝试将第二个动画移动到第一个动画回调的内部,以免它们发生冲突。

$('a#galleryArrow').bind('click', function(){ 

     wrapper.children() 
      .slice(imageSet,(imageSet + 5)) 
      .animate({opacity: 0}, function() { 

       $(this).hide(); 

       if (wrapper.children(':last-child').is(':visible')) { 
        imageSet = 0; 
       } 
       else { 
        imageSet = imageSet + 5; 
       } 

       wrapper.children() 
         .slice(imageSet, (imageSet + 5)) 
         .css({display: 'block'}) 
         .animate({opacity: 1}); 

       wrapper.animate({left: -(imageSet * 104)});  

      }); 

     return false; 

}); 
+0

因为我没有发布包装是ul,因此孩子是李,所以这样做就像你建议导致主回调中的所有代码运行5次(每次孩子完成它的动画1次不透明度:0,谢谢你给我更好的造型/秩序寿:) – Abe 2010-07-01 18:52:30

+0

@Abe - 没问题,你有没有排序呢? – redsquare 2010-07-01 18:56:22

+0

nope它仍然代理怪异我已经上传它,所以any1可以看到:http://www.southwark-woodcraft.org.uk/ – Abe 2010-07-01 19:03:14