2012-12-18 60 views
0

我怀疑,我使用一些jQuery插件与我的键盘干扰具有约束的特定事件箭头按键。如何解除绑定事件的特定按键

假设我不在乎打破不管它是他们在做什么,我怎么能拆散,比如说所有的事件,左,右箭头按键?

如何将一个调试或查看已在按键触发的事件列表? (我不知道是哪行代码正在处理的按键,如果有的话)

+0

您可以从body中编写监听按键事件,并且在您的回调函数中按下特定的按键时,返回false。 – mpm

回答

0

如果当你在任何地方集中在页面上的方向键被触发,则该事件处理程序可能绑定到窗口或文件,解除绑定像这样:

$(window).unbind('keydown'); 
$(document).unbind('keydown'); 

如果要取消绑定事件只针对“左”或“右”箭头键,您可以停止活动,像这样:

$(window).bind('keydown', function(e){ 
    switch(e.keyCode) { 
     case 37: // left arrow 
      e.preventDefault; 
      e.stopPropagation; 
      break; 
     case 39: // right arrow 
      e.preventDefault; 
      e.stopPropagation; 
      break; 
    } 
}); 
+0

那不是解开所有的keydown事件吗?我只想要左右箭头! – fortuneRice

+0

查看上面的编辑! –

0

我会建议调试以查找这些事件绑定的位置(或者即使绑定了它们)。如果这些绑定了jQuery,他们将可以通过.data()查看;

例如,在一个控制台:

$('.suspected.element').data().events 

如果关键事件通过一些插件是真正的原因,我想看看修改事件的结合,而不是添加的解决方法。

1

可以解绑,而不会影响其他绑定按键事件:

$(document).unbind("keypress.key37"); 
$(document).unbind("keypress.key39"); 

这就是所谓的namespaced events,使用<event_name>.<namespace>即标签的特异性结合(在你的情况, “keypress.key37 & keypress.key39”)。