【问题标题】:Unbind special keypress event取消绑定特殊按键事件
【发布时间】:2011-09-21 13:56:48
【问题描述】:

我有一个关于 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”之类的操作来仅取消绑定这个特定的“键”吗?或者如何做到这一点?!

【问题讨论】:

    标签: jquery keypress unbind


    【解决方案1】:

    你在正确的轨道上。这称为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");
    

    【讨论】:

      【解决方案2】:

      使用命名空间事件。

      http://docs.jquery.com/Namespaced_Events

      【讨论】:

      • 你能举个例子说明 OP 应该如何使用命名空间事件来解决这个问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多