如何取消绑定keydown事件一段时间然后再在Jquery中绑定它?

我正在使用箭头键导航表。 基于当前选定的行,我必须在div中加载一些细节。 选择一行后,它将向服务器发出Ajax调用以获取更多细节并在div中加载该细节。 这可能需要一些时间来进行Ajax调用和更新div。 在这段时间内,我想禁用按键事件。

$('#tbl tbody').on('keydown', function (event) { var keyCode = event.keyCode; if (keyCode >= 37 && keyCode <= 40) { event.preventDefault(); ChangeTarget(keyCode) } }); 

我只是想解开或暂停keydown事件一段时间。

我试图利用时间,但这并没有像我想要的那样帮助我。

 $('#tbl tbody').on('keydown', function (event) { var keyCode = event.keyCode; if (keyCode >= 37 && keyCode <= 40) { event.preventDefault(); ChangeTarget(keyCode); setTimeout(function () { }, 10000); } }); 

在Ajax完成工作之前,我不想记录任何关键事件!

您可以使用布尔标志而不是取消绑定。

这是一个例子:

 var keyNavigationDisabled = false; $('#tbl tbody').on('keydown', function (event) { if (keyNavigationDisabled) return; var keyCode = event.keyCode; if (keyCode >= 37 && keyCode <= 40) { event.preventDefault(); ChangeTarget(keyCode) } }); function getRemoteData() { keyNavigationDisabled = true; $.ajax({ url: 'http://example.com', complete: function () { keyNavigationDisabled = false; } }); }