停止jquery事件

时间:2015-02-10 07:27:11

标签: javascript jquery

我想如果我打电话给我的第二个如果其他工作然后第一个应该停止。但那也继续运行。如果第一个运行第二个应该停止。

if(e.keyCode == 39) {
  setInterval(function(){
  //

  }, 10);
} else if(e.keyCode == 37) {
  setInterval(function(){

  //    
  }, 10);
}

4 个答案:

答案 0 :(得分:0)

setInterval()返回set timer的ID,可用于停止它。

这样的事情应该有效:

var intervalId1, intervalId2;

if(e.keyCode == 39) {
    intervalId1 = setInterval(function() { ... }, 10);
    if (intervalId2) {
        clearInterval(intervalId2);
    }
} else if(e.keyCode == 39) {
    intervalId2 = setInterval(function() { ... }, 10);
    if (intervalId1) {
        clearInterval(intervalId1);
    }
}

答案 1 :(得分:0)

您需要使用共享范围内的变量

//in a shared scope, probably outside teh function where this code is placed
var interval;

if (e.keyCode == 39) {
    if (interval) {
        clearInterval(interval);
    }
    interval = setInterval(function () {
        //
        interval = undefined;
    }, 10);
} else if (e.keyCode == 37) {
    if (interval) {
        clearInterval(interval);
    }
    interval = setInterval(function () {
        //

        interval = undefined;
    }, 10);
}

答案 2 :(得分:0)

setInterval返回一个句柄,您可以使用该句柄来停止/清除间隔。

将此句柄存储在函数本身之外也很重要,否则下次函数运行时它将被清除。

由于您只关心一个间隔运行,因此您还只需要存储一个句柄。

//define globally outside your function
var interval = null;

//your function starts here

interval && clearInterval(interval); // (same as if(interval){clearInterval(interval);})

if(e.keyCode == 39) {
    interval = setInterval(function(){    
       //    
    }, 10);
} else if(e.keyCode == 37) {
    interval = setInterval(function(){    
      //    
    }, 10);
}

答案 3 :(得分:0)

使用一个变量interval存储setInterval的返回ID,每当调用函数清除该间隔时,您将得到所需的内容。

   var interval;
    $("#text_box").keydown(function(e){
        e.preventDefault();
        if(e.keyCode == 39){
            clearInterval(interval);
            interval=setInterval(sample1,1000);
        }
        else if(e.keyCode == 37){
            clearInterval(interval);
            interval=setInterval(sample2,1000);
        }
    });
    function sample1(){
        console.log("1");
    }
    function sample2(){
        console.log("2");
    }