首页 > 解决方案 > 如何在jquery的while循环中捕获转义按键事件?

问题描述

我在 jquery 的无限循环中运行一个函数。我想在按下退出键时退出循环。我做不到。我的循环无限运行。以下是我到目前为止所做的:

var playLoop = function(){
    var myVar;
    var continueLoop = 1;
    while(continueLoop === 1){

        $(document).on("keyup",function(e){
            if(e.key==="Escape"){
                continueLoop = 0;
            }
            myVar = setInterval(addition,1000);

        });

    }
}

我想停止在循环内运行一个函数,即当按下“退出”键时最终是一个循环。我错过了什么?我该怎么做?

标签: jquery

解决方案


您需要使用.setTimeout.clearTimeout一旦您识别出按了退出键,您就可以取消它。下面的例子有效。

让我知道你是否需要别的东西。

// Start your playLoop after document is ready
$(document).ready(function() {
  playLoop();
});


function playLoop() {

  // Append a dot so you know it's working
  $(".dots").append(".");

  // Set a new timeout to count down
  playLoopCountdown = setTimeout(playLoop, 1000);

}


// Attach escape key cancel
$(document).on("keyup", function(e) {

  if (e.key === "Escape") {

    // Stop playLoop
    clearTimeout(playLoopCountdown);

    // Tell user the timeout has been stopped
    $(".dots").append("STOPPED");

  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<p>You need to click within this iframe for the escape keypress to be registered.</p>
<div class="dots"></div>


推荐阅读