我在循环中有一个复选框,我想检查所有内容并使用jquery取消选中所有内容。我已经实现了一个Jquery全部检查并取消选中所有函数,但是,它只检查了checkall标签复选框后检查循环中的第一个复选框。我怎样才能正确实现这个?代码如下所示。感谢。
查看:
<div><input type="checkbox" class="check_all"> Check all</div>
<?php
$cnt=0;
echo form_open('students/del_student/'.$tennant_id);
foreach($data_student as $row)
{
$cnt++;
echo"<input type='hidden' name='course_occasion_id' value=".$row->course_occasion_id.">";
?>
<address>
<div class="row-fluid">
<div class="span2"><input type='checkbox' name='student_id[]'id="student_id" value="<?php echo $row->id;?>" ></div>
<div class="span4"><?php echo anchor("students/student/$row->id/$tennant_id",$row->first_name);?></div>
<div class="span4"><?php echo $row->last_name;?> </div>
<div class="span2"><?php echo $row->status;?> </div>
</div>
</address>
<?php
}
?>
Javascript:
<script type="text/javascript">
$('.check_all').on('click', function () {
$("#student_id").prop('checked', $(this).prop('checked'));
});
</script>
输出:
答案 0 :(得分:3)
您正在创建具有相同ID的每个复选框:
id="student_id"
ID在整个页面中应该是唯一的。
相反,将此更改为一个类,例如class="student_id"
并更改您的选择器以查找该类:
$(".student_id").prop('checked', $(this).prop('checked'));
答案 1 :(得分:1)
id
必须在文档中是唯一的。
在jQuery中,而不是#id
使用.class
而在HTML中使用class=...
代替id=...
。
$(".student_id").prop('checked', $(this).prop('checked'));
在HTML中查看the difference between id
and class
:
id = name [CS]
此属性为元素指定名称。此名称在文档中必须是唯一的。
class = cdata-list [CS]
此属性为元素指定类名或类名集。 可以为任意数量的元素分配相同的类名称。多个类名必须用空格字符分隔。
答案 2 :(得分:1)
使用class
代替...因为id
是唯一的
$('.check_all').on('click', function () {
$(".std").prop('checked', $(this).prop('checked'));
});
和你的HTML
<div class="span2"><input type='checkbox' name='student_id[]' class="std" value="<?php echo $row->id;?>" ></div>
答案 3 :(得分:0)
以下javascript有助于检查循环中所有未选中的复选框。
function FunCheckAll(obj) {
if (obj.checked) {
$('.chkSelectAll').each(function (i, e) {
if ($(e).is(":not(:visible())") == false) {
$(e).prop('checked', true);
}
});
}
else {
$('.chkSelectAll').each(function (i, e) {
$(e).prop('checked', false);
});
}
}
chkSelectAll是与复选框一起使用的类的名称。