Hier ist mein HTML:
<input class='user_roles' id="chk" type=checkbox /> <input id="btn_on" type="button" value="on" /> <input id="btn_off" type="button" value="off" />
Und mein jQuery:
$('#chk').click(function() {
if($(this).prop("checked") === true) {
alert ("checked");
}
else{
alert ("not checked");
}
});
$("[id$=btn_on]").click(function () {
$('#chk').click();
});
$("[id$=btn_off]").click(function () {
$('#chk').click();
});
Ein funktionierendes Beispiel ist ici .
Wenn das Kontrollkästchen mit der Maus angeklickt wird, wird es sofort aktiviert, d. h. die Meldung "aktiviert" wird angezeigt. Wenn jedoch eine der Schaltflächen angeklickt wird, die indirekt die Click-Methode für das Kontrollkästchen aufrufen, wird das Kontrollkästchen erst angeklickt, wenn nach der Klick-Code ausgeführt wurde.
Um dies zu testen, klicken Sie ein paar Mal mit der Maus auf das Kontrollkästchen und Sie sehen die Warnmeldungen "aktiviert" bzw. "nicht aktiviert". Wenn Sie auf "Ein" klicken, wird die Warnung "nicht markiert" angezeigt, und das Kontrollkästchen wird markiert. Wenn Sie dann auf "Aus" klicken, sehen Sie "markiert", und das Kontrollkästchen wird deaktiviert.
Was ist der Grund für dieses Verhalten? Wie kann ich sicherstellen, dass die "Überprüfung" des Kontrollkästchens vor dem Aufruf des Click-Listener-Codes erfolgt, wie es dem Mausverhalten entspricht?