jQuery暂停执行,直到调度一个事件

时间:2012-04-08 18:19:35

标签: javascript jquery events

好的,所以我试图实现类似控制台的行为,我需要暂停执行直到调度某个事件,我真正需要的是:

var evt = $("element").waitForKeyDown();

这个假设的函数应该暂停执行,直到用户按下“element”元素上的一个键,该元素被认为是一个文本字段。然后,当用户按下该文本字段上的任何键时,执行应该继续,并且evt应该包含与该事件相关的信息。

这可以在javascript中实现吗?或者像...一样的近似行为。

4 个答案:

答案 0 :(得分:6)

你永远不想在JavaScript中等待 - 只有一个线程,你需要它来处理可能进入页面其他部分的其他事件。

你想要做的是把你应该等待的所有事情发生在你要等待的地方并将其打包成function(){}。 (此函数称为“延续”,您将在JavaScript和其他重度异步环境中遇到此模式。)

从那里,您将使用以下jQuery注册您的新功能:

var evt = $("element").keydown(function(event){
   var keypressed = event.keyCode;

   // do whatever you'd like with the keypress.
});

你可以考虑使用keypress而不是keydown,但是按键(几乎矛盾的是)并没有得到所有的按键,只是那些变成某种文本输入的按键。

答案 1 :(得分:1)

我担心javascript中没有阻止操作,除了警报和提示。唯一的方法是(虽然可能是错的):

var evt = $("element").on("click",function(){
  //Continue here
});

答案 2 :(得分:0)

只需使用keydown事件。它完全符合您的要求:仅在按下某个键时执行操作。

答案 3 :(得分:0)

使用jQuery .keyDown http://api.jquery.com/keydown/

var evt = $("element").keyDown(function(){
  //Rest of your code
});