我有一个包含许多单选按钮组的表单,如下所示:
<form blah-blah-blah>
<input type="radio" id="id1_1" name="nam1" value="" class="rad">
<label for="id1_1" class="kf">label1_1</label>
<input type="radio" id="id1_2" name="nam1" value="" class="rad">
<label for="id1_2" class="kf">label1_2</label>
<input type="radio" id="id1_3" name="nam1" value="" class="rad">
<label for="id1_3" class="kf">label1_3</label>
<input type="radio" id="id2_1" name="nam2" value="" class="rad">
<label for="id2_1" class="kf">label2_1</label>
<input type="radio" id="id2_2" name="nam2" value="" class="rad">
<label for="id2_2" class="kf">label2_2</label>
<input type="radio" id="id2_3" name="nam2" value="" class="rad">
<label for="id2_3" class="kf">label2_3</label>
</form>
我使用 CSS 来改变收音机的样式。
.rad {display:none;}
.kf {padding:2px; background-color:#eaeaea; border:1px solid #dadada; cursor:pointer;}
.kf:hover, .sel {background-color:#3a608e; color:#fff;}
最后,我使用 jQuery 让它工作,但它没有。单击标签即可更改电台。
$(document).ready(function(){
$(".rad").change(function(){
if($(this).is(':checked')){
$(this).next("label").addClass("sel");
}else{
$(this).next("label").removeClass("sel");
};
});
});
如果选中收音机,标签必须改变颜色。如果收音机丢失“已选中”状态标签,则必须将颜色更改为“未选中”。
怎么了(别忘了几组收音机)?
编辑更新:我将这两个答案结合到最优雅的解决方案中=)
$(document).ready(function(){
$(".rad").change(function(){
var chk_name = $(this).attr("name");
if($(this).is(':checked')){
$(this).parents().find('input[name="'+chk_name+'"]').each(function(){
$(this).next('label').removeClass('sel');
});
$(this).next("label").addClass("sel");
};
});
});
谢谢!