Jquery:keydown()仅运行一次

4
我想要做的是,当我点击w时,它会输出一个警报,显示“第一次警报”,然后我希望能再次点击w并输出“第二次警报”。
我创建了一个名为“a”的变量,并将其设置为0,然后创建了两个函数,一个叫做firstAlert,另一个叫做secondAlert,这两个函数都会将1添加到'a'。
我创建了一个if语句来检查用户是否点击了w。在if语句中,我创建了一个switch语句来检查'a'的值,并根据'a'的值运行某个特定的case。
我的问题是,当我第一次点击w时,它会运行函数firstAlert()并输出“第一次警报”。但是第二次我点击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;
      }
    }
  });
 });

1
a + 1 => a += 1 - scniro
1
a + 1 => a++ - vol7ron
4个回答

2

看起来你想要增加a的值。 尝试使用a+=1; (相当于 a=a+1;


实际上这是有效的,只是在我的当前浏览器中无法工作。 - Jimmy Mac

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>


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>


0

你可能正在使用现代的jQuery版本(>3),有时会出现这个错误,你应该将keydown事件函数更改为以下方式:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接