Jquery:keydown()只运行一次

时间:2017-04-29 05:45:04

标签: javascript jquery

我要做的是点击w,它会输出一个警告,说明'第一次警报',然后我希望能够再次点击w,它将输出'第二次警报'。

所以我在这里做的是创建了一个名为'a'的变量,我将其设置为0然后我有两个函数,一个名为firstAlert,另一个名为secondAlert,它们都将1加到'a'。

我创建了一个if语句来检查用户是否点击了w。在if语句中,我创建了一个switch语句,它检查'a'的值并根据'a'的值来运行某个case。

我的问题是,当我第一次点击w时,它将运行firstAlert()函数并输出“first Alert”。但是第二次单击w时第二个函数根本没有运行,在某些浏览器上,当我点击w时第一个函数继续运行。

代码:

$(document).ready(function() {

    var a = 0;

    function firstAlert() {
      alert("first Alert");
      a + 1;
    }

    function secondAlert() {
      alert("second Alert");
      a + 1;
    }

    $(document).keydown(function(key) {
      if (key.which == 87) {
        switch (a) {
          case 0:
            firstAlert();
          break;

          case 1:
            secondAlert();
          break;

          default:
            a = 0;
          break;
      }
    }
  });
 });

4 个答案:

答案 0 :(得分:2)

看起来你想增加一个。 尝试 a+=1; (相当于 a=a+1;

答案 1 :(得分:2)

如果不更正其他代码,a++会为您提供所需内容:

jQuery(document).ready(function($) {

  var a = 0;

  function firstAlert() {
    alert("first Alert");
    a++;
  }

  function secondAlert() {
    alert("second Alert");
    a++;
  }

  $(document).keydown(function(key) {
    if (key.which == 87) {
      switch (a) {
        case 0:
          firstAlert();
          break;

        case 1:
          secondAlert();
          break;

        default:
          a = 0;
          break;
      }
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:0)

您可能正在使用现代jquery版本(&gt; 3),此错误有时会发生,您应该将keydown事件函数更改为:

$(document).on('keydown', 'document', function (){
     //Your code here
});

答案 3 :(得分:0)

试试这个

$(document).ready(function() {

    var a = 0;

    function firstAlert() {
      alert("first Alert");
      a+=1;
    }

    function secondAlert() {
      alert("second Alert");
      a+=1;
    }

    $(document).keydown(function(key) {
      if (key.which == 87) {
        switch (a) {
          case 0:
            firstAlert();
          break;

          case 1:
            secondAlert();
          break;

          default:
            a = 0;
          break;
      }
    }
  });
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>