Aquí es mi HTML:¿Cómo puedo entender este comportamiento de casilla de verificación?
<input class='user_roles' id="chk" type=checkbox />
<input id="btn_on" type="button" value="on" />
<input id="btn_off" type="button" value="off" />
Y mi 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();
});
Un ejemplo de trabajo es here.
Cuando se hace clic en la casilla de verificación con el mouse, se comprueba de inmediato, es decir, la alerta muestra "marcado". Sin embargo, cuando se hace clic en uno de los botones, que indirectamente llama al método de clic en la casilla de verificación, no se hace clic en la casilla de verificación hasta que después de se haya ejecutado el código de clic.
Para probar esto, haga clic en la casilla de verificación un par de veces con el mouse y verá las alertas "marcadas" y "no verificadas", respectivamente. Haga clic en "Activar" y verá la alerta "no marcada", y luego se marcará la casilla de verificación. Si luego haces clic en "Desactivado", verás "marcado" seguido de la casilla de verificación desmarcando.
¿Cuál es la razón de este comportamiento? ¿Cómo puedo asegurarme de que la casilla "verificar" se produzca antes de que se llame al código de escucha de clic, según el comportamiento del mouse?
¿Qué estás tratando de salir de esto? Tener un botón "on/off" para una 'casilla de verificación' parece un poco redundante. – Jack
@Jack, es un ejemplo muy simplificado. Tengo un oyente de clic en varias casillas de verificación y un botón para verificarlas todas a la vez, por lo tanto, necesito saber que la acción de verificación ocurre antes del código de clic. –