2011-09-21 15 views
12

jQuery tuşa basma olaylarıyla ilgili bir sorum var. Aşağıdaki (çalışma) bir kod var:Özel anımsatıcı olayının nedenini çözme

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

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

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

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

}); 

Ben hep "aşırı" Başka bağlayıcı ile "keserek" olayı. Bunu .unbind('keypress') ile çözebileceğimi biliyorum ama daha fazla tuşa basma olayım var ve bunu $(document).unbind('keypress') ile çözdüğümde tüm etkinliklerim kayboluyor.

Sadece "bu" anahtarını açmak için "keypress.102" gibi bir şey yapabilir miyim ya da bu nasıl yapılabilir?

cevap

27

Sen doğru yolda idi. Buna namespaced events denir, yani <event_name>.<namespace> (sizin durumunuzda "keypress.102") kullanarak belirli bağlamaları etiketler. Örneğin

:

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

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

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

daha sonra diğer ciltli tuşa basma olayları etkilemeden bu kurtarabilir miyim:

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

Bir şey nedir? –

+0

Daha alakalı bir örnek ekledim. –

+0

Evet, anladım ... iyi çalışıyor ... teşekkürler! – Mikaelik

İlgili konular