如何实现Jquery复选框选中所有/取消选中循环中的复选框的所有函数?

时间:2013-07-15 08:46:49

标签: javascript jquery codeigniter

我在循环中有一个复选框,我想检查所有内容并使用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>

输出:

enter image description here

4 个答案:

答案 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是与复选框一起使用的类的名称。