2015-02-10 297 views
0

我想如果我打電話給我的第二個if else工作,那麼第一個應該停止。但那也繼續運行。如果第一個運行第二個應停止。停止jquery事件

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

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

    //  
    }, 10); 
} 
+0

看看這個例子http://www.w3schools.com/jsref/met_win_clearinterval.asp – 2015-02-10 07:29:24

回答

0

setInterval()返回設置的定時器的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); 
    } 
} 
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); 
} 
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); 
} 
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"); 
    }