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 回答