2012-08-28 64 views
3

请我需要帮助滑动图像来回使用jquery,或者只是为了转。现在它滑到最后一个元素,并回到第一个div并重新开始,根本不漂亮,我知道我应该回调函数来做到这一点,但我不断收到错误。在此先感谢,这是低于jquery滑动来回或幻灯片

$(document).ready(function() { 
    var currentPosition = 0; 
    var slideWidth = 190; 
    var slides = $('.slider_move'); 
    var numberOfSlides = slides.length; 
    var slideShowInterval; 
    var speed = 5000; 

    slideShowInterval = setInterval(changePosition, speed);     
    slides.wrapAll('<div id="slidesHolder"></div>')     
    slides.css({ 'float' : 'left' });     
    $('#slidesHolder').css('width', slideWidth * numberOfSlides); 

    function changePosition() { 
     if(currentPosition == numberOfSlides - 1) { 
      currentPosition = 0; 
     } else { 
      currentPosition++; 
     } 
     moveSlide(); 
    }     
    function moveSlide() { 
      $('#slidesHolder') 
       .animate({'marginLeft' : slideWidth*(-currentPosition)}); 
    } 
});​ 

回答

2

而不是我的jQuery代码:

if(currentPosition == numberOfSlides - 1) { 
    currentPosition = 0; 
} else { 
    currentPosition++; 
} 

您需要将第一张幻灯片到最后(并在同一时间调整容器的位置):

if (currentPosition > 0) { 
    $('#slidesHolder').css('marginLeft',0) 
     .children().first().appendTo('#slidesHolder'); 
} else { 
    currentPosition += 1; 
} 

http://jsfiddle.net/mblase75/qatry/

或者,要优化整个事情点燃TLE多,可以消除currentPosition变量和moveSlide子功能,并且只使用一个回调在.animate方法:

function changePosition() { 
    $('#slidesHolder').animate({ 
     'marginLeft': 0-slideWidth 
    }, function() { 
     $('#slidesHolder').css('marginLeft', 0) 
      .children().first().appendTo('#slidesHolder'); 
    }); 
} 

http://jsfiddle.net/mblase75/8vaCg/

+0

都不行 - 第一张幻灯片将永远是同样,你需要删除它,然后追加它。 – Chris

+0

Blazemonger仍然没有工作,这是我在做的地方http://greencredit.webstyle.ru/下来附近的页脚,我只是需要他们滑动到底和背部或不停止转动 –

+0

@Blazemonger非常感谢,它的工作原理,我知道如何使用追加,应该得到更多的练习!祝你有美好的一天! –