当有人点击某个按钮时,我希望我的功能返回false
,keydown
功能将被禁用。
然后,如果我再次点击同一个按钮,它将返回true
并启用keydown
功能。
我确实喜欢这样,但它只返回false
和keydown
功能已禁用。我还需要通过单击此按钮启用此keydown
功能。
我该怎么做?
var controlsEnabled = true;
$(".keyboard-btn").on('click', function() {
controlsEnabled = false;
});
$(document).keydown(function(e) {
if (controlsEnabled) {
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();
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="keyboard-btn">click here</button>
答案 0 :(得分:2)
您的点击甚至只将controlEnabled设置为false。你需要一种方法来切换。
最快的选择是写这个
$(".keyboard-btn").on('click', function() {
controlsEnabled = !controlsEnabled // will toggle false -> true or true -> false;
});
您也可以使用if语句来实现相同的功能..就像这样
$(".keyboard-btn").on('click', function()
{
if(controlsEnabled)
{
controlsEnabled = false;
}
else
{
controlsEnabled = true;
}
});
这是更长篇大论,但完全有效,你可以说它更容易阅读。您也可以使用像这样的三元运算符
controlsEnabled = (controlsEnabled)? false : true;
但这不会带来任何好处,既不容易阅读,也不会更优雅。但值得了解基于自身有条件地设置值的不同方法。你永远不知道什么时候它会派上用场。
答案 1 :(得分:1)
这个怎么样?
$(".keyboard-btn").on('click', function() {
controlsEnabled = !controlsEnabled;
});
答案 2 :(得分:1)
这可能有帮助
$(".keyboard-btn").on('click', function () {
controlsEnabled= controlsEnabled? false :true ; // controlsEnabled = !controlsEnabled
});
答案 3 :(得分:1)
只需使用以下代码替换前4行:
var controlsEnabled = true;
$(".keyboard-btn").on('click', function() {
controlsEnabled = !controlsEnabled;
});
答案 4 :(得分:0)
首先,您的功能目前无法返回任何内容 - 您需要添加return
关键字。
其次,你的代码没有执行布尔开关,它只是分配一个布尔值。如true=1
和false=0
,您可以写:
controlsEnabled^=1;
使用XOR运算符从true切换回false,然后再返回。