带有复选框的jQuery更改事件处理程序
jQuery change event handler with checkbox
我有一个复选框,当它被启用(选中)时,我希望执行代码。它可以工作,但当复选框未选中时,代码仍然可以工作,我希望它在复选框未勾选时不工作。下面的代码在一个更大的jQuery函数中。当我取消选中该框时,我无法使代码停止工作。作为参考,复选框允许用户使用箭头键来调整画布元素。我希望他们能够在复选框被选中时进行调整,而在未选中时无法进行调整。
$("#hMove728").click( function(){
if($(this).is(':checked')){
alert("checked");
$(document).keydown(function(key) {
switch(parseInt(key.which,10)) {
case 38:
context.yB -= 2;
break;
case 39:
x += 2;
break;
case 40:
y += 2;
break;
case 37:
x -= 2;
break;
default:
break;
}
update();
})
}
});
在这里,检查事件处理程序中复选框的状态:
var moveCheckbox = $("#hMove728");
$( document ).keydown( function( key ) {
if ( moveCheckbox.is(":checked") ) {
// ...
}
});
$(function () {
$('input').on('change', function () {
if ($(this).prop('checked')) {
// It is checked
}
});
});
在else中放入:$(document).unbind('keydown');
这将解除对document元素上具有keydown名称的事件的绑定。
当您删除检查时,您必须在文档上"注销"keydown"事件,或者您可以在keydown函数中进行检查。像这样:
$(document).keydown(function(key) {
if(!$("#hMove728").is(':checked')) return;
switch(parseInt(key.which,10)) {
case 38:
context.yB -= 2;
break;
case 39:
x += 2;
break;
case 40:
y += 2;
break;
case 37:
x -= 2;
break;
default:
break;
}
update();
});
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 异步处理所有事件处理程序的方法
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 如何在事件处理程序的回调中防止Default