重置自我执行的JavaScript函数

时间:2012-11-19 21:56:24

标签: jquery function loops kill

我有一个循环自己的简单函数。我想杀死它然后根据用户操作重新执行它。不确定最好的方法是什么。

这就是我所拥有的:

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();
    });
});

3 个答案:

答案 0 :(得分: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();
    });
});

答案 1 :(得分: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);

答案 2 :(得分:0)

添加布尔值:

if(keeprunning) setTimeout(loopor, 3000);