我有一个关于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”的操作,只解开这个特定的“密钥”或者如何解决这个问题?!
答案 0 :(得分:29)
你走在正确的轨道上。这称为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");
答案 1 :(得分:1)
使用命名空间事件。