javascript - 仅在 Blade 模板中使用 JQuery 检查每行的复选框

标签 javascript jquery laravel checkbox

是否可以使用 jQuery 仅检查属于 Blade 模板内表格中的一行的复选框?我有这个表格 View

enter image description here

我只想检查属于 7-A 的学生,而不包括 7-B 的学生。我该如何让它发挥作用? 我使用 for-each 循环来显示表中的数据。使用我当前的 jQuery 代码,它将检查表中的所有项目。

查看表格:

<table class="table  table-hover table-bordered" > 
  <tr>
    <th>Section</th>
    <th>Student</th>
  </tr>
  @foreach($sections as $section)
  <tr>
    <td>  
      <input type="checkbox" id="chckHead" />
      <label>{{$section->section_code}}<label>
    </td>
    <td>  
      @foreach($section->lead as $bt)
      <input type="checkbox" class="chcktbl" name="lead_id[]" value="{{$bt->id}}">
      <label>{{$bt->student_name}}</label>
      @endforeach
    </td>
  </tr>
  @endforeach
</table>

脚本

$('#chckHead').click(function() {
  if (this.checked == false) {
    $('.chcktbl:checked').attr('checked', false);
  } else {
    $('.chcktbl:not(:checked)').attr('checked', true);
  }
});
$('#chckHead').click(function () {
});

最佳答案

使用$(this).parents('tr')获取当前表格行,并使用find选择当前行中的复选框。

$('#chckHead').click(function () {
    if (this.checked == false) {
        $(this).parents('tr').find('.chcktbl:checked').attr('checked', false);
    }
    else {
        $(this).parents('tr').find('.chcktbl:not(:checked)').attr('checked', true);
    }
});

或者只是这样做:

$('#chckHead').click(function () {
    $(this).parents('tr').find('.chcktbl:checked').attr('checked', this.checked);
});

示例:

$(document).ready(function(){
  $('.selectAll').on('click', function(){
    $(this).parents('tr').find('.student').prop('checked', this.checked)
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td style="border: 1px solid;vertical-align: top">
      <label>All A<input type="checkbox" class="selectAll"></label></td>
    <td style="border: 1px solid">
      <label>Student A1<input type="checkbox" class="student"></label><br>
      <label>Student A2<input type="checkbox" class="student"></label><br>
      <label>Student A3<input type="checkbox" class="student"></label>
    </td>
  </tr>
  <tr>
    <td style="border: 1px solid;vertical-align: top">
      <label>All B<input type="checkbox" class="selectAll"></label></td>
    <td style="border: 1px solid">
      <label>Student B1<input type="checkbox" class="student"></label><br>
      <label>Student B2<input type="checkbox" class="student"></label><br>
      <label>Student B3<input type="checkbox" class="student"></label>
    </td>
  </tr>
  <tr>
    <td style="border: 1px solid;vertical-align: top">
      <label>All C<input type="checkbox" class="selectAll"></label></td>
    <td style="border: 1px solid">
      <label>Student C1<input type="checkbox" class="student"></label><br>
      <label>Student C2<input type="checkbox" class="student"></label><br>
      <label>Student C3<input type="checkbox" class="student"></label>
    </td>
  </tr>

</table>

关于javascript - 仅在 Blade 模板中使用 JQuery 检查每行的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443296/

相关文章:

javascript - 使用javascript在图像上绘制

javascript - 如何将自己的 <divs> 动态添加到容器中?

php - Laravel json api 的可重复工作

php - 如何使用 laravel 和 phpunit 测试文件上传?

javascript - 使用jquery只获取第一个标签内容

javascript - 有没有办法在 html 中使用 JavaScript 检测溢出?

jquery自动完成从下拉菜单中删除选定的li项目

javascript - 如何仅在 jquery 插件中的当前输入文本框上触发同名类?

javascript - 切换被点击的元素并隐藏所有其他元素

php - Laravel 5 应用命名空间