Si está utilizando una versión relativamente nueva de JQuery, usaría el .on ('change', function () {...}) como se menciona en la respuesta de @Daniel De Leon a continuación. Una ventaja, el detector de eventos "on" se unirá a html generado dinámicamente.
Editar: hacer esto no se detectará cuando la casilla de verificación cambie por otros motivos que no sean un clic, como usar el teclado. Para evitar este problema, escuche en changelugar de click.
A su código le falta un paran, y realmente debería usar la forma jQuery para obtener el estado de verificación.
Pete Michaud
2
Shore: la razón por la que getElementById funciona es que devuelve un elemento DOM, mientras que la función $ jQuery devuelve un objeto jQuery. El objeto jQuery tiene el elemento DOM como una propiedad, pero no es, en sí mismo, un objeto DOM.
Pete Michaud
3
Sé que llego tarde a la fiesta, pero esto solo funciona cuando un evento de "clic" desencadena esto. Si por alguna razón hiciera algo como esto en otra parte del código: $ ("# something"). Attr ("verificado", "verificado") el evento click nunca se activaría.
David Stinemetze
3
@DavidStinemetze: Diría que puedes escuchar toneladas en changelugar de hacer clic. Estoy actualizando la respuesta
marcgg
44
¿El clic afectará a una etiqueta si tenemos una adjunta a la casilla de entrada?
Necesito saber si un clic significa marcarlo o desmarcarlo.
omg
1
luego puede usar $ (this) .is (': marcado') para probar el estado del elemento que acaba de hacer clic
Ty W
-1
$(document).ready(function(){
checkUncheckAll("#select_all","[name='check_boxes[]']");});var NUM_BOXES =10;// last checkbox the user clickedvarlast=-1;function check(event){// in IE, the event object is a property of the window object// in Mozilla, event object is passed to event handlers as a parameterevent=event|| window.event;var num = parseInt(/box\[(\d+)\]/.exec(this.name)[1]);if(event.shiftKey &&last!=-1){var di = num >last?1:-1;for(var i =last; i != num; i += di)
document.forms.boxes['box['+ i +']'].checked=true;}last= num;}function init(){for(var i =0; i < NUM_BOXES; i++)
document.forms.boxes['box['+ i +']'].onclick = check;}
Parece una selección de rango (es decir, verifique el primer elemento, mantenga presionada la tecla shift, verifique el último; y todos los intermedios están marcados). Sin embargo, esto es mucho más de lo que pide la pregunta. Sin embargo, falta algún código, como checkUncheckAll ().
Respuestas:
Editar: hacer esto no se detectará cuando la casilla de verificación cambie por otros motivos que no sean un clic, como usar el teclado. Para evitar este problema, escuche en
change
lugar declick
.Para marcar / desmarcar programáticamente, eche un vistazo a ¿Por qué no se activa mi evento de cambio de casilla de verificación?
fuente
change
lugar de hacer clic. Estoy actualizando la respuesta¿El clic afectará a una etiqueta si tenemos una adjunta a la casilla de entrada?
Creo que es mejor usar la función .change ()
fuente
Utilice el selector : marcado para determinar el estado de la casilla de verificación:
fuente
Para usar JQuery 1.7+:
fuente
Use el fragmento de código a continuación para lograr esto .:
O puede hacer lo mismo con la casilla de verificación única:
Para demostración: http://jsfiddle.net/creativegala/hTtxe/
fuente
En mi experiencia, he tenido que aprovechar el objetivo actual del evento:
fuente
Este código hace lo que necesita:
Además, puedes consultarlo en jsfiddle
fuente
use el evento click para una mejor compatibilidad con MSIE
fuente
HTML:
fuente