Ich habe ein Kontrollkästchen und wenn es aktiviert (aktiviert) ist, soll Code ausgeführt werden. Es funktioniert, aber wenn das Kontrollkästchen deaktiviert ist, funktioniert der Code immer noch. Ich würde es vorziehen, wenn es nicht aktiviert ist, wenn das Kontrollkästchen deaktiviert ist. Der folgende Code befindet sich in einer größeren jQuery-Funktion, die funktioniert. Ich kann den Code einfach nicht zum Funktionieren bringen, wenn ich das Kontrollkästchen deaktiviere. Als Referenz ermöglicht das Kontrollkästchen dem Benutzer, Pfeiltasten zum Anpassen eines Canvas-Elements zu verwenden. Ich möchte, dass sie sich anpassen können, wenn das Kontrollkästchen aktiviert ist, und nicht anpassen können, wenn das Kontrollkästchen deaktiviert ist.

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

    })
   }

});
0
dandlezzz 2 Dez. 2013 im 22:45

4 Antworten

Beste Antwort

Aktivieren Sie hier den Status des Kontrollkästchens im Ereignishandler:

var moveCheckbox = $("#hMove728");
$( document ).keydown( function( key ) {
  if ( moveCheckbox.is(":checked") ) {
    // ...
  }
});
2
sbking 2 Dez. 2013 im 18:51

Sie müssen das Ereignis "Keydown" in Ihrem Dokument "aufheben", wenn Sie die Prüfung entfernen, oder Sie können die Prüfung in Ihrer Keydown-Funktion durchführen. So was:

$(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();
});
0
Vinicius Lima 2 Dez. 2013 im 19:04
$(function () {
    $('input').on('change', function () {
        if ($(this).prop('checked')) {
            // It is checked
        }
    });
});
0
bagonyi 2 Dez. 2013 im 18:49

In else setzen Sie: $ (document) .unbind ('keydown');

Dadurch wird das Ereignis mit dem Namen "Keydown" für das Dokumentelement aufgehoben.

0
Nosferato 2 Dez. 2013 im 18:56