2011-09-21 16 views
12

Tengo una pregunta con respecto a los eventos de jQuery keypress. Tengo el código (de trabajo) siguiente:Desvincular evento de pulsación especial

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

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

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

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

}); 

Siempre "desatar" el evento con la unión a otros "sobre" la misma. Sé que puedo desvincularlo con .unbind('keypress'), pero tengo más eventos de pulsación de tecla y cuando desvinculo esto con $(document).unbind('keypress') todos mis eventos se pierden.

¿Puedo hacer algo como "keypress.102" para desvincular solo esta "clave" en particular o cómo puedo hacer esto?

Respuesta

27

Usted estaba en el camino correcto. Eso se llama namespaced events, es decir, etiquetar enlaces específicos usando <event_name>.<namespace> (en su caso, "keypress.102").

Por ejemplo:

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

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

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

Más tarde, puede desenlazar que sin afectar a otros eventos de pulsación encuadernados:

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

¿Qué es 'algo'? –

+0

He agregado un ejemplo más relevante. –

+0

Sí, lo tengo ... funciona bien ... gracias !!! – Mikaelik

Cuestiones relacionadas