模式关闭后停止jQuery函数

时间:2019-07-14 02:58:48

标签: javascript jquery

我有一个这样的功能,每3秒重复一次,就像这样:

function myFunction() {

// Do something sexy

   var delay = 3000;
   setTimeout(function() {
   myFunction();
   }, delay);

}

它在Bootstrap模态窗口内运行,并且仅应在该窗口打开时运行。

我尝试将延迟包装成类似以下内容:

if ($('#modal-task').hasClass('in')){
    var delay = 3000;
    setTimeout(function() {
    myFunction();
    }, delay);
}

但是问题是,如果模态被关闭并重新打开,则函数每次关闭和打开都会运行两次甚至更多次。

当模态关闭/不可见时,如何完全杀死函数?

2 个答案:

答案 0 :(得分:1)

这可能有效,而不是if语句

    function something_sexy () {
    // Do something sexy

       var delay = 3000;
       setTimeout(function() {
       myFunction();
       }, delay);
    }
    while ($('#modal-task').hasClass('in')) {
    something_sexy();
    }

答案 1 :(得分:0)

当您关闭Bootstrap模型时,“ in”将从模型类中删除。因此,当关闭模型时,请清除超时。

喜欢。

function myFunction() {
// Do something sexy
   console.log("test");
   var delay = 3000;
  //Assign setTimeout in variable timerval 
   let timerval = setTimeout(function() {
   myFunction();
   }, delay);

  //when close the model clear the timeout
   if (!$('.#modal-task').hasClass("in")){
     clearTimeout(timerval );
   }

}