除非发生任何其他事情,否则JQuery keydown事件仅触发一次

时间:2018-05-23 12:44:52

标签: javascript jquery html

我正在尝试显示字体真棒'?'当用户按住“alt”键时,在具有“。info”类的每个元素之后。它似乎工作,但当我释放“Alt”并尝试再次按下时没有任何反应。但是,当我点击文档时,它再次起作用。请参阅代码示例:

    jQuery(document).ready(function ($) {
    var keyDown = false;
        $(document).on("keydown", function (e) {
        console.log(keyDown);
        if (e.key == "Alt") {
            if (!keyDown) {
                $('.info').each(function () {
                    $(this).after("<a style=\"color:black;postion:absolute;\"><i class=\"fas fa-info-circle\"></i></a>");
                });
            }
            keyDown = true;
        }
        });
        $(document).on("keyup", function (e) {
        if (e.key == "Alt") {  
            console.log("alt released");
            $('.info').each(function () {
                $(".fa-info-circle").remove();
            });
            keyDown = false;
        }
        });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="info">Test</p>

编辑:当使用另一个密钥(我测试“我”)它似乎工作正常,所以我认为这可能是一个Chrome问题。

1 个答案:

答案 0 :(得分:1)

Chrome有许多使用alt的键盘快捷键 - 例如alt + home会将您带到主页。

您可以在此处查看所有快捷方式:

https://support.google.com/chrome/answer/157179?hl=en-GB

如果您想覆盖Chrome的行为(我不推荐),您可以将e.preventDefault()添加到您的keydown功能。