jQuery 热键 - 解除绑定?

2024-03-06

我有一个 jQuery 对话框,它初始化热键如下:

<script type="text/javascript">
  $(document).bind('keydown', '<%=(i+1)%>',function (evt) {
     // do stuff
  });
</script>

循环从 1 到 9...

问题是,如果您关闭对话框然后重新打开对话框。它不断重新绑定,因此当您按下“1”键时,它会运行两次、三次、四次等......它会不断增长。

我尝试杀死对话框上的键绑定关闭

$(document).unbind('keydown', '1');
$(document).unbind('keydown', '2');
$(document).unbind('keydown', '3');
$(document).unbind('keydown', '4');
$(document).unbind('keydown', '5'); 
$(document).unbind('keydown', '6');
$(document).unbind('keydown', '7');
$(document).unbind('keydown', '8');
$(document).unbind('keydown', '9');

但这没有效果。关于如何处理这个问题有什么想法吗?

Thanks


注意.unbind() http://api.jquery.com/unbind/不支持eventData争论,这就是为什么你的解除绑定不起作用。

在我的脑海里,你有两种不同的方法。如果这些是唯一的文档级 keydown 绑定,您可以“完全”取消绑定,如下所示:

$(document).unbind('keydown'); // unbinds *all* keydown handers on the document

或者,您可以将 keydown 处理程序存储为非匿名函数,并保留引用以在关闭对话框时传回取消绑定:

function onkeydown(evt) {
   // do stuff
}

$(document).bind('keydown', '<%=(i+1)%>', onkeydown);

// later, in the dialog's "shutdown" code:
$(document).unbind('keydown', onkeydown);

然而,当同一个函数被多次绑定时,我并不是 100% 肯定它是如何工作的。你最好消除eventData并使用event.which在事件处理程序中确定按下了哪个键(这样只需要绑定处理程序一次)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery 热键 - 解除绑定? 的相关文章

随机推荐

  • 重音字符(变音符号)的具体 JavaScript 正则表达式

    我看过堆栈溢出 替换字符 呃 https stackoverflow com questions 286921 efficiently replace all accented characters in a string JavaScri
  • Simpy 中的资源未释放 - 我做错了什么?

    我已按照建议简化了代表问题的代码并尝试进行调试 这是代码的最简单版本 但仍然包含错误 import simpy SIM TIME 5 def source env i 0 while True i 1 env process train e
  • 在 PHP 脚本中对 5000 个地址进行地理编码

    我希望在 PHP 脚本中一次对 5000 多个地址进行地理编码 这只会运行一次 我一直在研究谷歌作为这样做的潜在资源 但是我读过报告 在通过谷歌运行 200 个左右的查询后 谷歌将让你开始这一天 我只是想知道是否有其他方法可以对 5000
  • Git 使用错误的子密钥使用 GPG 密钥对提交进行签名

    我对 git 和使用 GPG 密钥签署提交有疑问 我有一个主密钥 仅用于认证 我为每台计算机创建了两个子密钥 仅用于签名 我已将公钥添加到 Github 并使用配置了 gituser signingKey配置选项 问题是 git 似乎忽略了
  • 在 Android 中抑制包中的 toast

    我正在开发一个 Android 应用程序 我试图用Toast 我用了Toast在其他项目中一切正常 但在这个应用程序中 当Toast应该出现 但它没有出现 Logcat 显示下一条消息 Suppressing toast from pack
  • 通过ajax打开FileStreamResult(作为下载的文件)

    是否可以使用 ajax 调用将 FileStreamResult 作为下载的文件打开 控制器方式 public FileStreamResult DownloadPDF var stream myHandler getFileStream
  • 在 iOS 上哪里可以添加来自 Firebase 的数据库引用?

    我正在按照此说明在 iOS 应用程序上安装和设置实时数据库link https firebase google com docs database ios start set up firebase database我很困惑在哪里添加声明s
  • Solr 查询无法正常工作

    我不知道出了什么问题 这实际上是一个非常简单的查询 在我的 Solr 搜索中不起作用 http IP ADDRESS solr CORE NAME select indent on q Bangalore wt json 我的数据库中有超过
  • SqlCommand-SqlConnection使用处置问题

    根据 MSDN 如果 IDisposable 资源 嵌套的内部using语句包含外部using的资源 语句中 嵌套资源的 Dispose 方法释放 包含的资源 MSDN http msdn microsoft com en us libra
  • 在ContinueWith()之后,ConfigureAwait(False)不会改变上下文

    我不知道我是否做错了什么 或者我在异步库中发现了错误 但在我使用 continueWith 返回到同步上下文后运行一些异步代码时 我发现了一个问题 更新 代码现在运行 using System using System ComponentM
  • 如果出现新组合,VBA 在表中添加行

    我有点难以找到一种根据资本支出类别 合作伙伴数量和期间向表中可变地添加行的方法 Mu final table looks like more sections but for example it is not a listobject i
  • 指定 Maven security-settings.xml 文件的自定义位置?

    使用 Maven 您可以轻松指定 settings xml 位置 例如 mvn s custom dir settings xml package 有没有类似的方法来指定自定义 security settings xml 其背后的原因很简单
  • 使用日历检查日期是否有效

    我想使用日历方法来设置年份和月份 但想要某种指示如果日期无效 例如 calendar set 2013 Calendar JANUARY 23 is a valid date calendar set 2013 Calendar JANUA
  • 如何启用/禁用 JEditable

    SOLUTION 感谢 Arman 的 P 概念验证 终于让它可以与我的网站一起使用了 CODE Edit Note function function makeEditable edit editable ajax save php ed
  • CStr() 与 Str() 与 .ToString()

    我想知道两者之间到底有什么区别CStr Str and ToString Label1 Text CStr Int Rnd 10 and Label1 Text Str Int Rnd 10 and Label1 Text Int Rnd
  • 以编程方式将主题应用到按钮

    是否可以以编程方式将 Widget AppCompat Button 主题应用于按钮 Button button new Button context button setText Button 目前 我正在使用自定义可绘制资源 尝试实现类
  • 如何从GridView中删除一行?

    我在用GridView控制在asp net questions tagged asp net 2005 c questions tagged c 23 using 如何从中删除特定行GridView 我编写了以下代码 但这不起作用 Data
  • 退出应用程序会导致错误“来自调试器的消息:由于信号 9 而终止”

    我正在编写一个基本的音乐播放器应用程序 但在处理应用程序状态转换时遇到一些问题 我正在使用 Swift 3 和 MPMusicPlayerController systemMusicPlayer 目标是这样的 1 当用户点击主页按钮并且应用
  • 使用 Sass 以可重用的方式设计一组特定的输入类型

    我想要一个 mixin 函数 它返回 HTML5 输入类型的列表 我想在一个地方管理它 当新类型出现时 改变函数 而不是代码中其他地方的所有地方 问题似乎是 mixins 的设计目的不是返回可以在 CSS 花括号之外使用的字符串 这是我的
  • jQuery 热键 - 解除绑定?

    我有一个 jQuery 对话框 它初始化热键如下 循环从 1 到 9 问题是 如果您关闭对话框然后重新打开对话框 它不断重新绑定 因此当您按下 1 键时 它会运行两次 三次 四次等 它会不断增长 我尝试杀死对话框上的键绑定关闭 docume