自动延迟Jquery滑块

时间:2014-08-05 08:33:03

标签: jquery automation slider delay

我已就此进行了大量研究,无法找到有关此主题的任何内容或如何做到这一点。

我已将自动添加到我的jquery滑块但是,我需要延迟它...任何人都可以帮助我,这是我的Jsfiddle:http://jsfiddle.net/Kenton9008/836pW/

    function auto() {
    $('#slider ul').animate({
        left: - slideWidth
    }, 1500, function () {
        $('#slider ul li:first-child').appendTo('#slider ul');
        $('#slider ul').css('left', '');
    });
    auto(function(){
        setTimeout(auto, 2000);
        });
};

2 个答案:

答案 0 :(得分:1)

setTimeout添加到animate函数的回调中应该可以按照您想要的方式运行:

function auto() {
    $('#slider ul').animate({
        left: - slideWidth
    }, 1500, function () {
        $('#slider ul li:first-child').appendTo('#slider ul');
        $('#slider ul').css('left', '');
        setTimeout(auto, 2000);
    });
};

DEMO:http://jsfiddle.net/YL7v8/

答案 1 :(得分:0)

我认为你的超时有点混乱。不要在调用auto函数内调用它,只需将其设置为在animate的完整函数中运行即可。像这样:

function auto() { 
    $('#slider ul').animate({
        left: - slideWidth
    }, 1500, function () {
        $('#slider ul li:first-child').appendTo('#slider ul');
        $('#slider ul').css('left', '');
        setTimeout(auto, 2000);
    });
};

jsfiddle:http://jsfiddle.net/836pW/3/

或者尝试使用jQuery' .delay()函数,而不是这样:

function auto() {
    $('#slider ul').delay(2000).animate({
        left: - slideWidth
    }, 1500, function () {
        $('#slider ul li:first-child').appendTo('#slider ul');
        $('#slider ul').css('left', '');
        auto();
    }); 
};

这是jsfiddle:http://jsfiddle.net/836pW/1/