2011-09-21 93 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