2011-09-21 90 views
12

我有一个关于jQuery按键事件的问题。我有以下的(工作)代码:取消绑定特殊按键事件

$(document).bind('keypress', function(event) { 

    if ($('#myDiv').is(':visible')) { 

     if (event.which == 102) { 
      // ...do something... 
     } 

    } 
    else { 
     if (event.which == 102) { 
      return; 
     } 
    } 

}); 

我总是“解除绑定”与结合另一种“过度”,它的事件。我知道我可以用.unbind('keypress')取消绑定,但我得到更多按键事件,当我用$(document).unbind('keypress')取消绑定时,所有事件都会丢失。

我可以做一些像“keypress.102”这样的解锁这个特殊的“钥匙”吗?或者怎么做到这一点?

回答

27

你在正确的轨道上。这就是所谓的namespaced events,即使用<event_name>.<namespace>(在你的情况下,“keypress.102”)标记特定的绑定。

例如:

$(document).bind("keypress.key102", function(event) { 
    if ($('#myDiv').is(':visible')) { 

     if (event.which == 102) { 
      // ...do something... 
     } 

    } 
    else { 
     if (event.which == 102) { 
      return; 
     } 
    } 
}); 

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

$(document).unbind("keypress.key102"); 
+0

什么是'东西'? –

+0

我已经添加了一个更相关的例子。 –

+0

是的,我知道了...它运作良好...谢谢! – Mikaelik