单击以返回false,再次单击以返回true

时间:2017-09-27 09:35:21

标签: javascript jquery html5

当有人点击某个按钮时,我希望我的功能返回falsekeydown功能将被禁用。

然后,如果我再次点击同一个按钮,它将返回true并启用keydown功能。

我确实喜欢这样,但它只返回falsekeydown功能已禁用。我还需要通过单击此按钮启用此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>

5 个答案:

答案 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=1false=0,您可以写:

controlsEnabled^=1;

使用XOR运算符从true切换回false,然后再返回。