Ich würde gerne so etwas tun, um ein Häkchen bei checkbox
mit jQuery :
$(".myCheckBox").checked(true);
o
$(".myCheckBox").selected(true);
Gibt es so etwas?
Ich würde gerne so etwas tun, um ein Häkchen bei checkbox
mit jQuery :
$(".myCheckBox").checked(true);
o
$(".myCheckBox").selected(true);
Gibt es so etwas?
Utilice .prop()
:
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Wenn Sie nur mit einem Element arbeiten, können Sie immer nur auf die zugrunde liegende HTMLInputElement
und ändern seine .checked
Eigentum:
$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;
Der Vorteil der Verwendung des .prop()
y .attr()
Methoden ist, dass sie auf alle übereinstimmenden Elemente wirken.
El .prop()
Methode ist nicht verfügbar, daher müssen Sie die .attr()
.
$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
Beachten Sie, dass es sich hierbei um der Ansatz, der von den Unit-Tests von jQuery vor Version 1.6 verwendet wurde und ist vorzuziehen gegenüber der Verwendung von $('.myCheckbox').removeAttr('checked');
da letztere, wenn das Kästchen ursprünglich markiert war, das Verhalten eines Aufrufs von .reset()
auf jedem Formular, das es enthält - eine subtile, aber wahrscheinlich unerwünschte Verhaltensänderung.
Für mehr Kontext, eine unvollständige Erörterung der Änderungen bei der Handhabung der checked
Attribut/Eigenschaft beim Übergang von 1.5.x zu 1.6 finden Sie in der Version 1.6 Versionshinweise y el Attribute vs. Eigenschaften Abschnitt der .prop()
Dokumentation .
Ja, das ist die Einstellung des Attributwerts, und die Deaktivierung des Attributs. Ich habe meine Antwort aktualisiert, um dies zu zeigen.
@Xian das Entfernen des Attributs "checked" macht es unmöglich, das Formular zurückzusetzen
Das Problem dabei ist, dass Sie etwas brauchen, das für beide Versionen funktioniert. In diesem Fall können Sie das Plugin verwenden :) Vielen Dank für das Update!
Ich habe genau diesen Code ausprobiert und er hat bei mir nicht funktioniert, wenn es sich um ein Kontrollkästchen zum Auswählen aller bzw. zum Auswählen keiner Optionen handelt, das sowohl alle Optionen als auch ihren Status überprüfen muss. Stattdessen versuchte ich @Christopher Harris' Antwort und das tat den Trick.
Warum verwenden Sie "form #mycheckbox" statt einfach "#mycheckbox"? Die ID ist bereits im gesamten Dokument eindeutig, es ist schneller und einfacher, sie direkt zu wählen.
Dies ist der korrekte Weg, um mit jQuery Kontrollkästchen zu aktivieren und zu deaktivieren, da dies ein plattformübergreifender Standard ist. wird die Wiederveröffentlichung von Formularen erlauben.
$('.myCheckBox').each(function(){ this.checked = true; });
$('.myCheckBox').each(function(){ this.checked = false; });
Auf diese Weise verwenden Sie JavaScript-Standards für das Aktivieren und Deaktivieren von Kontrollkästchen, so dass jeder Browser, der die Eigenschaft "checked" des Kontrollkästchen-Elements korrekt implementiert, diesen Code einwandfrei ausführen kann. Diese sollte in allen gängigen Browsern, aber ich kann keine Tests vor Internet Explorer 9 durchführen.
Das Problem (jQuery 1.6):
Sobald ein Benutzer auf ein Kontrollkästchen klickt, reagiert dieses Kontrollkästchen nicht mehr auf Änderungen des Attributs "checked".
Hier ist ein Beispiel dafür, dass das Attribut "checkbox" seine Aufgabe nicht erfüllt, nachdem jemand angeklickt das Kontrollkästchen (dies geschieht in Chrome).
Die Lösung:
Durch die Verwendung der JavaScript-Eigenschaft "checked" für die DOM Elementen können wir das Problem direkt lösen, anstatt zu versuchen, das DOM so zu manipulieren, dass es tut, was wir wollen. wollen es zu tun.
Dieses Plugin ändert die Eigenschaft "checked" aller Elemente, die mit jQuery ausgewählt wurden, und aktiviert und deaktiviert Kontrollkästchen unter allen Umständen. Auch wenn dies wie eine übermäßige Lösung erscheinen mag, wird es die Benutzerfreundlichkeit Ihrer Website verbessern und dazu beitragen, Frustration bei den Benutzern zu vermeiden.
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// Set the value of the checkbox
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// Toggle the checkbox
$(this).each(function(){ this.checked = !this.checked; });
}
return this;
};
})( jQuery );
Wenn Sie kein Plugin verwenden möchten, können Sie alternativ auch die folgenden Codeschnipsel verwenden:
// Check
$(':checkbox').prop('checked', true);
// Un-check
$(':checkbox').prop('checked', false);
// Toggle
$(':checkbox').prop('checked', function (i, value) {
return !value;
});
In Ihrem ersten JSFiddle-Beispiel sollten Sie Folgendes verwenden removeAttr('checked')
statt attr('checked', false)
@DanielXMoore, Du umgehst das Thema. Das Beispiel sollte zeigen, dass der Browser nach dem Anklicken des Kontrollkästchens durch den Benutzer nicht mehr auf checked
Attributänderungen, trotzdem der Methode, mit der sie geändert werden.
@ChristopherHarris Ok, Sie haben recht, das habe ich übersehen. Ab jQuery 1.6 sollten Sie die .prop-Methode aber nicht verwenden? $('.myCheckBox').prop('checked', true)
Auf diese Weise wird es automatisch auf die gesamte Menge der übereinstimmenden Elemente angewendet (nur beim Festlegen, das Erhalten ist immer noch nur das erste)
Das können Sie tun
$('.myCheckbox').attr('checked',true) //Standards compliant
o
$("form #mycheckbox").attr('checked', true)
Wenn Sie benutzerdefinierten Code im onclick-Ereignis für das Kontrollkästchen haben, den Sie auslösen möchten, verwenden Sie stattdessen diesen:
$("#mycheckbox").click();
Sie können die Markierung aufheben, indem Sie das Attribut vollständig entfernen:
$('.myCheckbox').removeAttr('checked')
Sie können alle Kästchen wie folgt ankreuzen:
$(".myCheckbox").each(function(){
$("#mycheckbox").click()
});
@Michah das Entfernen des Attributs "checked" macht es unmöglich, das Formular zurückzusetzen
Sie können das $.fn-Objekt auch mit neuen Methoden erweitern:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Dann können Sie es einfach tun:
$(":checkbox").check();
$(":checkbox").uncheck();
Oder Sie können ihnen eindeutige Namen wie mycheck() und myuncheck() geben, falls Sie eine andere Bibliothek verwenden, die diese Namen benutzt.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Eine spezifischere (und sehr nützliche!) Frage, "Wie überprüfe ich ein Element in einem Kontrollkästchen, das nach Wert gesetzt ist?", können wir auch hier diskutieren, und ich habe eine Antwort unten gepostet.
0 Stimmen
Weitere Möglichkeiten, dies mit jQuery zu tun, finden Sie hier stackoverflow.com/a/22019103/1868660
0 Stimmen
Wenn Sie das onchange-Ereignis auslösen müssen, ist es
$("#mycheckbox").click();
0 Stimmen
"Etwas ankreuzen" suggeriert, dass es getestet wird, daher halte ich "Ein Kontrollkästchen ankreuzen" für einen klareren und besseren Titel.
0 Stimmen
Prop(); Funktion ist die perfekte Antwort. Siehe die Funktionsdefinition - api.jquery.com/prop
0 Stimmen
Attr() funktioniert nicht mit IE. prop() ist die beste Option
0 Stimmen
$(".myCheckBox").prop("checked", true)