Wenn Sie eine relativ neue Version von JQuery verwenden, würde ich die .on ('change', function () {...}) verwenden, wie in der Antwort von @Daniel De Leon unten erwähnt. Ein Vorteil ist, dass der Ereignis-Listener "on" an dynamisch generiertes HTML gebunden wird.
Bearbeiten: Dies wird nicht erfasst, wenn sich das Kontrollkästchen aus anderen Gründen als einem Klick ändert, z. B. über die Tastatur. Um dieses Problem zu vermeiden, hören Sie changestatt click.
In Ihrem Code fehlt ein Paran, und Sie sollten wirklich die jQuery-Methode verwenden, um den Prüfstatus abzurufen.
Pete Michaud
2
Shore: Der Grund, warum getElementById funktioniert, ist, dass es ein DOM-Element zurückgibt, während die Funktion $ jQuery ein jQuery-Objekt zurückgibt. Das jQuery-Objekt hat das DOM-Element als Eigenschaft, ist jedoch selbst kein DOM-Objekt.
Pete Michaud
3
Ich weiß, dass ich zu spät zur Party komme, aber dies funktioniert nur, wenn ein "Klick" -Ereignis dies auslöst. Wenn Sie aus irgendeinem Grund an einer anderen Stelle im Code so etwas tun würden: $ ("# etwas"). Attr ("geprüft", "geprüft"), würde das Klickereignis niemals ausgelöst.
David Stinemetze
3
@ DavidStinemetze: Ich würde sagen, dass Sie Ton hören könnten, changeanstatt zu klicken. Ich aktualisiere die Antwort
Marcgg
44
Der Klick wirkt sich auf eine Beschriftung aus, wenn eine an das Eingabe-Kontrollkästchen angehängt ist.
Ich denke, dass es besser ist, die .change () -Funktion zu verwenden
Wie kann man beurteilen, ob es aktiviert ist oder nicht?
Omg
Ich muss wissen, ob ein Klick das Aktivieren oder Deaktivieren bedeutet.
Omg
1
Sie können dann $ (this) .is (': checked') verwenden, um den Status des gerade angeklickten Elements zu testen
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;}
Sieht aus wie eine Bereichsauswahl (dh überprüfen Sie das erste Element, halten Sie die Umschalttaste gedrückt, überprüfen Sie das letzte; und alle dazwischen sind aktiviert.) Dies ist jedoch viel mehr, als die Frage verlangt. Es fehlt jedoch ein Code wie checkUncheckAll ().
Antworten:
Bearbeiten: Dies wird nicht erfasst, wenn sich das Kontrollkästchen aus anderen Gründen als einem Klick ändert, z. B. über die Tastatur. Um dieses Problem zu vermeiden, hören Sie
change
stattclick
.Informationen zum programmgesteuerten Aktivieren / Deaktivieren finden Sie unter Warum wird mein Kontrollkästchen-Änderungsereignis nicht ausgelöst?
quelle
change
anstatt zu klicken. Ich aktualisiere die AntwortDer Klick wirkt sich auf eine Beschriftung aus, wenn eine an das Eingabe-Kontrollkästchen angehängt ist.
Ich denke, dass es besser ist, die .change () -Funktion zu verwenden
quelle
Verwenden Sie den Selected: Selected, um den Status des Kontrollkästchens zu bestimmen:
quelle
Für JQuery 1.7+ verwenden Sie:
quelle
Verwenden Sie dazu das folgende Code-Snippet:
Oder Sie können dasselbe mit einem einzigen Kontrollkästchen tun:
Für die Demo: http://jsfiddle.net/creativegala/hTtxe/
quelle
Nach meiner Erfahrung musste ich das aktuelle Ziel der Veranstaltung nutzen:
quelle
Dieser Code macht, was Sie brauchen:
Sie können es auch auf jsfiddle überprüfen
quelle
Verwenden Sie das Klickereignis, um die beste Kompatibilität mit MSIE zu erzielen
quelle
HTML:
quelle