1

我正在使用带有热键插件的 JQuery,并且无法解除绑定事件。具体来说,我试图在绑定到该按键的方法中取消绑定按键事件。

例如:

$(document).bind('keydown', 'space', doStuff)

function doStuff() {
    alert("Doing stuff");
    $(document).unbind('keydown', 'space');
}

我想我可能误解了 unbind 调用 API - 我需要提供第三个参数吗?在某些文档中,似乎我必须提供我最初提供的函数处理程序来绑定作为此参数 - 但该函数处理程序正是我从中调用 unbind 的函数,所以我没有处理它?还是我?

请注意,在今天之前,我使用的是:

$(document).unbind('keydown');

这工作得很好——我需要在代码中的几个点绑定和取消绑定“空格”,这就成功了。但是现在我也一直在绑定其他按键,并且发现这个调用(毫不奇怪)取消了所有按键的所有按键绑定。

那么如何使用热键插件或不使用热键插件来取消绑定特定按键的部分或全部事件?

4

1 回答 1

1

您需要使用命名空间。

$(document).bind('keydown.space', 'space', doStuff)

function doStuff() {
    alert("Doing stuff");
    $(document).unbind('keydown.space', 'space');
}
于 2011-08-31T06:08:20.037 回答