jQuery更改事件处理程序与复选框

时间:2013-12-02 18:45:48

标签: javascript jquery checkbox

我有一个复选框,当它启用(选中)时,我想要执行代码。它可以工作但是当取消选中该框时,代码仍然有效,我希望在取消选中该框时它不起作用。以下代码位于更大的jQuery函数中。当我取消选中该框时,我无法让代码停止工作。作为参考,复选框允许用户使用箭头键来调整画布元素。我希望他们能够在盒子被checekd时进行调整,并且在未选中时无法调整。

$("#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();

    })
   }

});

4 个答案:

答案 0 :(得分:2)

在这里,检查事件处理程序内的复选框的状态:

var moveCheckbox = $("#hMove728");
$( document ).keydown( function( key ) {
  if ( moveCheckbox.is(":checked") ) {
    // ...
  }
});

答案 1 :(得分:0)

$(function () {
    $('input').on('change', function () {
        if ($(this).prop('checked')) {
            // It is checked
        }
    });
});

答案 2 :(得分:0)

删除支票时,您必须“取消注册”文档中的“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();
});

答案 3 :(得分:0)

在其他地方放: (文档)$ .unbind( 'KEYDOWN');

将使用文档元素上的keydown名称取消绑定事件。