0

setInterval 関数を使用して簡単なスクリプトを作成しましたが、最初のボタン クリックでは問題なく動作していますが、ボタンを数回クリックすると間隔がキューに入れられます。Jqueryで1つの関数を使用してこれを解決しようとしましたが、Interevalを再度設定できません。
これを防ぐ方法はありますか?ありがとうございました!!
フィドルの例
私のコード:

 var changeClass=function(){

   if($('ul li.active').length==0){
   $('ul li:first').addClass('active');
   }
    else if($('.active').next().length==0){
       $('.active').removeClass('active');
       $('ul li:first').addClass('active');
    }
      else{
      $('.active').removeClass('active').next('li').addClass('active')
      }

 } 

$(document).ready(function() {
 var intervalID;
    $(".button").click(function(){
    intervalID=setInterval(changeClass,1000);
    });

      $(".clear").click(function(){
      clearInterval(intervalID);
      });

});
4

1 に答える 1

2

それで、あなたは実際に何をしようとしていますか?間隔がすでに設定されているときに開始ボタンを無視する場合は、次のようにクリック ハンドラーを記述します。

$(".button").click(function() {
    if(!intervalID) {
        intervalID = setInterval(changeClass,1000);
    }
});

開始ボタンで間隔を再開したい場合は、次のように開始ボタンがクリックされるたびにクリアボタンをクリックすることができます:

$(".button").click(function(){
    // Perform a click on the clear button
    $(".clear").click();

    intervalID = setInterval(changeClass,1000);
});

$(".clear").click(function(){
    clearInterval(intervalID);
});
于 2012-08-04T09:56:46.183 に答える