Cuando hago clic en una casilla de verificación, ¿por qué no se agrega el atributo marcado? Puede ver el código aquí http://jsfiddle.net/FCrSg/
El atributo HTML checked
significa: marcado de forma predeterminada , cuando se carga la página. Esto no cambiará cuando se haga clic en la casilla de verificación.
<input type="checkbox" checked="checked"> <!-- The HTML attribute -->
La propiedad DOM checked
es en realidad el estado actual de la casilla de verificación y es verdadero/falso. Esto cambiará cuando se haga clic en la casilla de verificación, pero no estará visible cuando inspeccione el HTML.
$('input:check')[0].checked == true; // Whether or not the checkbox is currently checked
¿Que estás tratando de hacer? ¿Averiguar si está marcado?
$('.user_roles').click(function(){ console.log( $(this).is(':checked')); });
Si desea verlo aparecer en el elemento que se muestra en la consola, use el método setAttribute()
nativo.
Ejemplo: http://jsfiddle.net/FCrSg/2/
this.setAttribute('checked',this.checked);
Entonces se vería así:
$('.user_roles').click(function(){ this.setAttribute('checked',this.checked); console.log( $(this) ); });
Entonces la consola debería darte:
<input class="user_roles" type="checkbox" checked="true">
Aunque normalmente no necesitarías el conjunto de atributos así. Por lo general, la propiedad es suficiente.