I've got a question regarding jQuery keypress events. I've got the following (working) code:
$(document).bind('keypress', function(event) {
if ($('#myDiv').is(':visible')) {
if (event.which == 102) {
// ...do something...
}
}
else {
if (event.which == 102) {
return;
}
}
});
I always "unbind" the event with binding another "over" it. I know that I can unbind it with .unbind('keypress')
but I got more keypress events and when i unbind this with $(document).unbind('keypress')
all my events get lost.
Can I do something like "keypress.102" to only unbind this particular "key" or how can this be done?!
Using the removeEventListener() method The JavaScript built-in function removeEventListener() removes an event handler from an element for a connected event. For instance, you can use removeEventListener() to get rid of a click event listener if a button is disabled after one click.
jQuery unbind() MethodUse the off() method instead. The unbind() method removes event handlers from selected elements. This method can remove all or selected event handlers, or stop specified functions from running when the event occurs. This method can also unbind event handlers using an event object.
The change event occurs if the value has been changed when the element loses focus. The keypress event occurs every time you press down and release a (non control) key.
You were on the right track. That's called namespaced events, i.e. labelling specific bindings using <event_name>.<namespace>
(in your case, "keypress.102").
For example:
$(document).bind("keypress.key102", function(event) {
if ($('#myDiv').is(':visible')) {
if (event.which == 102) {
// ...do something...
}
}
else {
if (event.which == 102) {
return;
}
}
});
you can later unbind that without affecting other bound keypress events:
$(document).unbind("keypress.key102");
Use a namespaced event.
http://docs.jquery.com/Namespaced_Events
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With