3

jqueryを使用してWebサイトのカスタムスライダーを作成する必要があります。これまでのところ、ボタンをクリックすると思い通りに動作するようにできましたが、5秒後にスライドが切り替わるように自動タイマーを実装したいと思います。

これが私のJSコードです:

function MasterSlider() {
    //store the current button ID
    var current_button = $(this).attr('id');

    //reset all the items
    $('#slider ul a').removeClass('slider-button-active');         
    //set current item as active
    $(this).addClass('slider-button-active');


    //scroll it to the right position
    $('.mask').scrollTo($(this).attr('rel'), 850);


    //Check which button is pressed and fade the text accordingly
    if(current_button == "slider_item1")
    {
        $('#slider h3').fadeOut().removeClass('caption_active');
        $('#slider_caption1').fadeIn().addClass('caption_active');
    }
    else if(current_button == "slider_item2")
    {
        $('#slider h3').fadeOut().removeClass('caption_active');
        $('#slider_caption2').fadeIn().addClass('caption_active');
    }
    else if(current_button == "slider_item3")
    {
        $('#slider h3').fadeOut().removeClass('caption_active');
        $('#slider_caption3').fadeIn().addClass('caption_active');      
    }

    //disable click event
       return false;      
}

//append click event to the UL list anchor tag
$('#slider ul a').click(MasterSlider);

前もって感謝します!

4

2 に答える 2

4

!の要素で動的にトリガーできますclick()asetInterval

var intv;
var current = 0;  // STARTING SLIDE(<li>element button) INDEX
var slN = $('#slider li').length; // get number of slides(buttons.. all the same)


 // your function here with
 // clearInterval(intv);
 // in the second line.
 // In third line put:
 // current = $(this).closest('li').index();

// AUTO SLIDE

function auto(){
   intv = setInterval(function() {
        $('#slider ul li').eq( current++%slN  ).find('a').click();
   }, 5000 );       
}
auto(); // to start immediately auto-slide

// PAUSE ON MOUSEOVER

$('#slider').on('mouseenter mouseleave', function( e ){
    var onMouEnt = e.type=='mouseenter' ? clearInterval(intv) : auto() ;
});
  • 関数のおかげでcurrent++%slNauto最後のボタンがトリガーされるとループします
  • PAUSE はイベントmouseenterを検出mouseleaveし、ギャラリー上で、三項演算子を使用して次のことを行います。

$('#slider').on('mouseenter mouseleave', function( e ){ // catch eVENT
    var onMouEnt = e.type=='mouseenter' ?  // if e IS mouseenter
                   clearInterval(intv) :   // clear autoslide interval
                   auto() ;                // else (is mouseleave) run 'auto' fn
});
于 2013-03-21T19:20:41.620 に答える
-1

関数setIntervalがあります

    function hi(){
        //Your code here
    }

    //set an interval
    setInterval(hi, 30000);
于 2013-03-21T19:21:24.647 に答える