选中父复选框时,如何选择/取消选中循环中生成的所有复选框

时间:2013-05-04 07:13:01

标签: php javascript html

<script>
    $(function(){
    $('.parent').on('click',function(){
    $(this).find('.child[]').attr('checked',this.checked);
    });
});
</script>
<table>
  <thead>
    <tr>
      <th>S No.</th>
      <th><input type="checkbox" name="select1" id="select1" class="parent" /></th>
      <th>Title</th>
      <th>End Date</th>
      <th>Action</th>
      <th>Deal Type</th>
      <th>Status</th>
    </tr>
  </thead>   
  <tbody>
    <tr>
    <?php $sql="select * from table_name where id='$id'";
      $result=mysql_query($sql); 
      $sn=1;
      while($show=mysql_fetch_array($result))
      { 
          $student=$show['student'];

      ?>
      <td><?php  echo $sn; ?></td>
      <td><?php echo "<input type='checkbox' name='check[]' class='child[]' id='check[]' value='".$student."'/>"; ?></td>
      <td>enddate</td>
      <td>View</td>
      <td>Edit</td>                                            
      <td>Delete</td>
      <td>xyz</td>
    </tr>
    <?php $sn++ }}?>

这里,checkbox-name=select1不在循环中,而是父复选框。 checkbox-name=check实际上是一个复选框数组,随附数据库中的数据。如果数据库中有10个条目,则会有10个复选框。我希望如果我选中父复选框,那么无论您可以说什么数字,都应该检查所有复选框,就像gmail一样。还请告诉javascript / jquery放在哪里。谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

点击回调中的this会引用复选框本身。因此$(this).find('.child[]')将找不到任何元素。

另请注意,class="index[]"不适用于jQuery,因此您希望将其更改为class="index"。您可以保留name="index[]"

如果你想查找父表范围内的元素(从而允许你有多个(un)check all结构),你可以使用:

$(function(){
  $('.parent').on('click',function(){
      $(this).parents('table').find('.child').attr('checked',this.checked);
  });
});

如果您只想查找文档中的所有子节点,请使用:

$(function(){
  $('.parent').on('click',function(){
      $('.child').attr('checked',this.checked);
  });
});

亲切的问候,

阿诺德·