我需要将所有选中的复选框着色为绿色,并取消选中一个为红色。
<style>
input[type=checkbox]+span{
color:red;
}
input[type=checkbox][checked]+span{
color:green;
}
</style>
<label>
<input type="checkbox" class="bike"/>
<span>I have a bike</span></label>
<label>
<input type="checkbox" checked class="car"/>
<span>I have a car</span>
</label>
加载页面时看起来很好。但是后来,当用户点击任何复选框时,它的颜色没有被更改。调试后,我发现当用户点击发生时,checked
属性没有添加到输入标签。有人可以告诉我原因吗?
我试图明确地放置checked
属性然后它运作良好。
<button>Click</button>
<script>
$('button').click(function(){
$('.bike').attr('checked',true);
});
</script>
但我不想使用任何脚本来实现这一目标。有没有办法让它成为可能?
实际上,checked
属性被添加到复选框以进行检查?
这是jsfiddle。
答案 0 :(得分:5)
有一个:checked
伪选择器(updated fiddle)
为了完整性,这里是对它的当前支持:(from MDN)
Chrome Firefox (Gecko) Internet Explorer Opera Safari
1.0 1.0 (1.7 or earlier) 9.0 9.0 3.1
答案 1 :(得分:1)
这是一个很好的功能,通过使用一些类:
checkbox.on('click', function(){
$(this).toggleClass('checked');
if ($(this).hasClass('checked')) {
$(this).prop("checked", true);
}
else {
$(this).prop("checked", false);
}
});
对于班级checked
,您可以添加一些类似颜色的样式......