2011-01-15 13 views
2

ich diese CSS-Regel haben ...Gibt es keine Möglichkeit, dies rein über CSS zu tun?

input[checked="false"] + label {opacity: .6} 

Für diesen HTML ...

<input type="checkbox" checked="true" name="whatever" value="whatever" id="whatever"> 
<label for="whatever">Whatever</label> 

Und ich würde denken, dass, wie ich sie aktivieren oder deaktivieren, es undurchsichtig oder halb werden würde -transparent. Allerdings, stellt sich heraus, Attribut ändert sich nicht, wenn das DOM element.checked tut, da das ehemalige ist einfach die Standardwert.

Als solche habe ich es mit ein wenig JavaScript Bootstrap ...

document.getElementById('whatever').addEventListener('change', toggleChecked, false); 
function toggleChecked() { 
    this.setAttribute('checked', this.checked); 
} 

Grundsätzlich meine Frage ist, ob dies erforderlich ist oder nicht. Gibt es eine Möglichkeit, den Stil des Labels nur über CSS zu ändern, basierend auf dem Checked-or-Not-Status seiner Checkbox?

+1

'false' ist kein gültiger Wert von' checked'. Es ist entweder "überprüft" in HTML oder "checked =" checked "" in XHTML oder nichts, wenn nicht markiert. 'true' und' false' im DOM sind Boolesche Werte. – BoltClock

+0

Sie haben einen Punkt, aber selbst wenn ich einfach 'checked' verwendet habe, wird das HTML-Attribut nicht entfernt, wenn das Kontrollkästchen deaktiviert ist. Das Problem besteht also immer noch. Äh, stand da, da die ideale Maschine die ': checked'-Pseudoklasse erwähnte. – Kerrick

Antwort

Verwandte Themen