2017-09-26 51 views
0

我有js代码,当我按下键38,40 13时,这些函数分别工作。 但我想要做的是,当我点击按钮的keydown功能块将禁用, 当我悬停这个按钮,这个的keydown功能块将被启用。单击按钮后如何停止keydown函数

$(document).keydown(function(e){ 
if (e.keyCode == 38) { 
    verticalSlideDown(); 
    //console.log("pressed key for Down : "+e.keyCode); 
} 
if (e.keyCode == 40) { 
    verticalSlideUp(); 
    //console.log("pressed key for Up: "+e.keyCode); 
} 
if (e.keyCode === 13) { 
    var div= $(".scroll-inner-container"); 
    //console.log("pressed key for stop : "+e.keyCode); 
    div.stop(); 
} 
}); 

这是我的HTML按钮:

<button class="keyboard-btn">click here</button> 
+0

你可以使用jQuery'()'和'关()'添加和删除动态事件处理程序:http://api.jquery.com/off/ – Kokodoko

回答

3

只需创建一个标志。

悬停时启用,点击时禁用。

var controlsEnabled = false; 

$(myButton).hover(function() { 
    controlsEnabled = true; 
}); 

$(myButton).on('click', function() { 
    controlsEnabled = false; 
}); 

$(document).keydown(function (event) { 

    if (controlsEnabled) 
    { 
     // rest of code here 
    } 

}); 
+0

非常感谢你@Lars .. !它的工作原理,但我不知道这是问题或不是单击event.when我点击这个按钮时......同时光标保持悬停在这个button.for悬停事件永远是真的......我能做什么为了那个原因..?有什么想法。 – Masud001

+0

悬停事件将重写单击事件,因为它会被重复调用,而不是单击事件,每次单击都会调用一次。我不知道如何在不改变设置的情况下解决这个问题。 –

+0

如何使用click event.first点击启用,然后点击disable.this函数......? – Masud001

相关问题