0

ループする単純な関数があります。ユーザーのアクションに基づいて、それを殺してから再実行したいと思います。それを行う最善の方法が何であるかはわかりません。

これが私が持っているものです:

function loopor(){

    $slider.next();

    setTimeout(loopor, 3000);
}

そして、これが私がする必要があることです:

$('#thing').click(function(event){

    event.preventDefault();

    var thing = $(this);

    /* help here */
    magicKillLooporFunction();
    /* end help*/

    thing.animate({
        height: '100%'
    }, function({
        loopor();
    });
});
4

3 に答える 3

4
var myTimeout;
function loopor(){
    clearTimeout(myTimeout);  //Add this so multiple clicks don't create multiple timeouts
    $slider.next();
    myTimeout = setTimeout(loopor, 3000);
}    

そして、他のコードで

$('#thing').click(function(event){
    event.preventDefault();
    var thing = $(this);
    clearTimeout(mytimeout);
    thing.animate({
    height: '100%'
    }, function({
        loopor();
    });
});
于 2012-11-19T21:58:53.307 に答える
1

最も簡単な解決策は次のとおりです。

(function($) {
     var $slider, //Assign value
         timeout;
     function loopor() {
          $slider.next();
          timeout = setTimeout(loopor, 3000);
     }
     $('#thing').click(function(event){

          event.preventDefault();

          var thing = $(this);

          /* help here */
          clearTimeout(timeout);
          /* end help*/

          thing.animate({
              height: '100%'
          }, function({
              loopor();
          });
     });
})(jQuery);
于 2012-11-19T22:00:37.020 に答える
0

ブール値を追加します。

if(keeprunning) setTimeout(loopor, 3000);
于 2012-11-19T21:59:11.750 に答える