0

独自のスライダーを作成しました。各スライドにはさまざまな要素のさまざまなアニメーションがあるため、ボタンがスライドごとに変化するように、このようなものがあります。

$('.content1').click(function(e){
    $('#image1').animate({'margin-left': '0px', 'margin-top': '0px'});
    $('#box1').animate({'margin-top': '0px'});
    hide2();  //hiddeing slide2
    hide3();  //hidding slide3
    e.preventDefault();
});

$('.content2').click(function(e){
    hide1(); //hidding slide1
    hide3();  //hidding slide2
    $('#box2').animate({'margin-top': '0px'});
    $('#image2').animate({'margin-top': '0px'});
    e.preventDefault();
}); 


$('.content3').click(function(e){
    hide1();
    hide2();
    $('#box3').animate({'margin-left': '0px'});
    $('#image3').stop().delay(1000).show().animate({'opacity': '1'});
    e.preventDefault();
});

スライダーが X 秒ごとに単独で移動する間隔を追加したいと思います。

私が慣れている1つの関数だけではなく、3つの異なる呼び出しを行うことが可能かどうか疑問に思います:

setInterval(function(){
     nameOfFunction();
    }, 6*1000);

ありがとう。

4

1 に答える 1

0

最後にsetTimeout、@BradMが推奨するように使用して解決しました。

もっと簡単な方法があると思いますが、私がやった方法は次のとおりです。コードは次のとおりです。

メニュー クリック イベント:

$('.content1').click(function(e){
    slide1();
    e.preventDefault();
});

$('.content2').click(function(e){
    slide2();
    e.preventDefault();
}); 

$('.content3').click(function(e){
    slide3();
    e.preventDefault();
});

スライド効果

function slide1(){
    next = 2; //setting which is gonna be the next slide
    $('#image1').animate({'margin-left': '0px', 'margin-top': '0px'});
    $('#box1').animate({'margin-top': '0px'});

    hide2();
    hide3();
}

function slide2(){
    next = 3; //setting which is gonna be the next slide
    hide1();
    hide3();
    $('#box2').animate({'margin-top': '0px'});
    $('#image2').animate({'margin-top': '0px'});
}

function slide3(){
    next = 1; //setting which is gonna be the next slide
    hide1();
    hide2();
    $('#box3').animate({'margin-left': '0px'});
    $('#image3').stop().delay(1000).show().animate({'opacity': '1'});
}

隠蔽機能

    function hide1(){
    $('#image1').animate({'margin-left': '2000px'});
    $('#box1').animate({'margin-top': '-2000px'});
}

function hide2(){
    $('#box2').animate({'margin-top': '600px'});
    $('#image2').animate({'margin-top': '-2000px'});
}

function hide3(){
    $('#box3').animate({'margin-left': '-2000px'});
    $('#image3').animate({'opacity' : '0', 'display' : 'none'}, function(){
        $(this).hide();
    });
}

オンマウス オーバー/アウト アクション

//when its over, we stop the movement
var delay = 6000; //6 seconds
$('#slider').hover(function(){
    clearTimeout(timer);

}, function(){
//starting again the animation (since the last slide)   
    timer = window.setTimeout(playSlide, delay);
});

主なプレイスライド機能

var next = 2;  //next slide will be the 2nd one at the start
function playSlide(){
    var name = "slide" + next;
    var method = eval(name);

    method();

    //calling recursively the function
    timer = window.setTimeout(playSlide, delay);
}

最初の呼び出し

  //only if there's an slider, we initate it
if($('#slider').length){
    //first call the the slider
    timer = window.setTimeout(playSlide, delay);
}
于 2013-02-27T16:42:07.187 に答える