1

假设我们有以下 JQuery 代码:

$(document).bind('keyup', function(e) {    
    arrows=((e.which)||(e.keyCode));    
    switch (arrows){    
       case 37:
          executeMyfunction();     
          break;    
    }    
});

如果用户按住左箭头键 (37),executeMyfunction()则会重复调用。

我怎样才能防止这种情况发生?

我认为keyup只有当密钥被释放但它不起作用时才会触发(这就是我使用keyup;keydown也不起作用的原因)。

4

2 回答 2

1

我相信你必须解除绑定事件。我认为应该不是keyup,而是keypresskeydown

大概是这样的。

$(document).bind('keydown', function(e) {    
    arrows=((e.which)||(e.keyCode));    
    switch (arrows){    
       case 37:    
          executeMyfunction();    
          $(document).unbind('keydown');    
          break;    
    }
});

keyup如果要再次使用该事件,则必须重新绑定该功能:

$(document).bind('keyup', function(e) {        
    switch (arrows){    
      case 37:
         $(document).bind('keydown');
         break;
    }    
})

看: http ://api.jquery.com/unbind/

于 2011-03-10T01:04:21.083 回答
0

好吧,您总是可以消除对您的函数的调用。也就是说,如果您希望在短时间内没有触发事件之后调用您的函数。

于 2011-03-10T01:07:36.867 回答