Wie kann ich das Ereignis checken/deaktivieren von <input type="checkbox" />
mit jQuery?
Erfasst das Änderungsereignis eines Kontrollkästchens
omg
marcgg
<input type="checkbox" id="something" />
$("#something").click( function(){
if( $(this).is(':checked') ) alert("checked");
});
Bearbeiten: Dadurch wird nicht erkannt, wenn sich das Kontrollkästchen aus anderen Gründen als einem Klick ändert, z. B. mit der Tastatur. Um dieses Problem zu vermeiden, hören Sie sich an change
Anstatt von click
.
Informationen zum programmgesteuerten Aktivieren/Deaktivieren finden Sie unter Warum wird mein Kontrollkästchen-Änderungsereignis nicht ausgelöst?
-
document.getElementById(‘something’).checked funktioniert, warum funktioniert $(‘#something’).checked nicht?
– omg
21. September 2009 um 15:52 Uhr
-
Ihrem Code fehlt ein Paran und sollte wirklich die jQuery-Methode verwenden, um den Prüfstatus abzurufen.
– Peter Michaud
21. September 2009 um 15:53 Uhr
-
Shore: Der Grund, warum getElementById funktioniert, ist, dass es ein DOM-Element zurückgibt, während die $ jQuery-Funktion ein jQuery-Objekt zurückgibt. Das jQuery-Objekt hat das DOM-Element als Eigenschaft, ist aber selbst kein DOM-Objekt.
– Peter Michaud
21. September 2009 um 15:54 Uhr
-
Ich weiß, dass ich zu spät zur Party komme, aber das funktioniert nur, wenn ein „Klick“-Ereignis dies auslöst. Wenn Sie aus irgendeinem Grund an anderer Stelle im Code so etwas tun würden: $(“#something”).attr(“checked”, “checked”), würde das Click-Ereignis niemals ausgelöst werden.
– David Stinemetze
4. Januar 2012 um 22:23 Uhr
-
@DavidStinemetze: Ich würde sagen, dass du Tonne zuhören könntest
change
statt klicken. Ich aktualisiere die Antwort– Marcgg
12. Januar 2012 um 14:55 Uhr
Der Klick wirkt sich auf ein Etikett aus, wenn wir eines an das Eingabekästchen angehängt haben?
Ich denke, es ist besser, die Funktion .change() zu verwenden
<input type="checkbox" id="something" />
$("#something").change( function(){
alert("state changed");
});
-
Dies sollte die akzeptierte Antwort sein, da es bei der Frage um das Abhören eines Check-Ereignisses und nicht um ein Klick-Ereignis geht.
– Jessica
23. Mai 2019 um 8:57 Uhr
karim79
Verwenden Sie die :gecheckt Selektor, um den Zustand des Kontrollkästchens zu bestimmen:
$('input[type=checkbox]').click(function() {
if($(this).is(':checked')) {
...
} else {
...
}
});
Verwenden Sie für JQuery 1.7+:
$('input[type=checkbox]').on('change', function() {
...
});
Deepak Saini
Dieser Code erfüllt Ihre Anforderungen:
<input type="checkbox" id="check" >check it</input>
$("#check").change( function(){
if( $(this).is(':checked') ) {
alert("checked");
}else{
alert("unchecked");
}
});
Sie können es auch überprüfen jsfiddle
Erik Terwan
Verwenden Sie das folgende Code-Snippet, um dies zu erreichen.:
$('#checkAll').click(function(){
$("#checkboxes input").attr('checked','checked');
});
$('#UncheckAll').click(function(){
$("#checkboxes input").attr('checked',false);
});
Oder Sie können dasselbe mit einem einzelnen Kontrollkästchen tun:
$('#checkAll').click(function(e) {
if($('#checkAll').attr('checked') == 'checked') {
$("#checkboxes input").attr('checked','checked');
$('#checkAll').val('off');
} else {
$("#checkboxes input").attr('checked', false);
$('#checkAll').val('on');
}
});
Zur Demo: http://jsfiddle.net/creativegala/hTtxe/
Brandon Askov
Meiner Erfahrung nach musste ich das aktuelle Ziel des Ereignisses nutzen:
$("#dingus").click( function (event) {
if ($(event.currentTarget).is(':checked')) {
//checkbox is checked
}
});
Wenn Sie eine relativ neue Version von JQuery verwenden, würde ich .on(‘change’, function(){…}) verwenden, wie in @Daniel De Leons Antwort unten erwähnt. Ein Vorteil, der “on”-Ereignis-Listener bindet an dynamisch generiertes HTML.
– BLang
8. März 2018 um 14:31 Uhr