根据Jquery的某些值设置复选框

时间:2013-09-16 11:17:59

标签: javascript jquery dom

我想根据student.student_type的值设置其中一个复选框,其中student是json对象,我在ajax调用后获得,student.student_type可以是0,1,2和3之一其中0 =>常规,1 =>对应等。

       <input id="student_type_" type="checkbox" value="Regular" />Regular
       <input id="student_type_" type="checkbox" value="Correspondence" />Correspondence
       <input id="student_type_" type="checkbox" value="Exchange"/>Exchange
       <input id="student_type_" type="checkbox" value="Dual" />Dual

由于生成的html中所有复选框的id都相同,我无法决定如何执行此操作。有什么办法可以使用复选框的值来实现这个目的吗?请帮忙。

1 个答案:

答案 0 :(得分:0)

ID必须是唯一的,因此您应该为元素指定一个公共类:

<input class="student_type_" type="checkbox" value="Regular" />Regular
<input class="student_type_" type="checkbox" value="Correspondence" />Correspondence
<!-- ... -->

似乎位置如果元素与数据中的数字对应。如果是这种情况,只需按索引获取正确的元素:

$('.student_type_').eq(student.student_type).prop('checked', true);

如果你改变了元素的顺序,那么当然不会再这样了。您可能希望使用数字值作为复选框的实际值:

<input class="student_type_" type="checkbox" value="0" />Regular
<!-- ... -->

并改为使用属性选择器:

$('.student_type[value="' + student.student_type + '"]').prop('checked', true);

或者,如果您无法更改该值,则可以使用数组进行映射:

var types = ['Regular', 'Correspondence', /*...*/];
$('.student_type[value="' + types[student.student_type] + '"]').prop('checked', true);

由于学生只能是一种类型,您可能需要考虑使用单选按钮而不是复选框。