2011-09-21 20 views
12

Ho una domanda riguardante gli eventi di jpress keypress. Ho il seguente codice (di lavoro):Annulla l'evento di pressione tasto speciale

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

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

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

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

}); 

ho sempre "unbind" l'evento con il grippaggio un altro "over" di esso. So che posso smetterla con .unbind('keypress') ma ho ricevuto più eventi di keypress e quando non li ho più con $(document).unbind('keypress') tutti i miei eventi si perdono.

Posso fare qualcosa come "keypress.102" per separare solo questa particolare "chiave" o come può essere fatto ?!

risposta

27

Tu eri sulla strada giusta. Si chiama namespaced events, cioè etichettando binding specifici usando <event_name>.<namespace> (nel tuo caso, "keypress.102").

Ad esempio:

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

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

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

in seguito sarà possibile svincolare che senza influenzare gli altri eventi di pressione rilegati:

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

Cos'è 'something'? –

+0

Ho aggiunto un esempio più pertinente. –

+0

Sì, ho capito ... funziona bene ... grazie !!! – Mikaelik

Problemi correlati