【发布时间】:2019-07-27 07:08:02
【问题描述】:
我试图仅在选中复选框时检测按键,但是在第一次激活复选框后,它总是运行其功能。
这是“我的”代码:
var keys = {};
$(":checkbox").click(function() {
if(this.checked) {
$(document).keydown(function (e) {
e.preventDefault()
keys[e.which] = true;
printKeys(e);
});
$(document).keyup(function (e) {
e.preventDefault()
delete keys[e.which];
printKeys(e);
});
}
if(this.checked) 中的内容只有在选中复选框后才会执行,但之后它总是会检测到我的按键,无论复选框是否被选中。
【问题讨论】:
-
每次单击复选框时,您都会添加一个事件处理程序。这意味着如果未选中该复选框,则事件处理程序将保留。如果您不希望它运行,请在未选中复选框时删除事件处理程序。或者,一直监听事件,只在勾选复选框时在事件监听器中做某事。
标签: jquery