javascript - 选择复选框 !== 选择行表

标签 javascript jquery checkbox

选择/取消选择按钮作用于复选框。

但它不适用于行表。

//Select row table
$('#example').on('click', 'tr', function() {
  var $row = $(this),
    isSelected = $row.hasClass('selected')
  $row.toggleClass('selected')
    .find(':checkbox').prop('checked', !isSelected);
});

// Problem : Checkbox !== select row
$("#selectAll, #unselectAll").on("click", function() {
  var selectAll = this.id === 'selectAll';
  $("#example tr :checkbox").prop('checked', selectAll);
});

我认为 list 只是为了显示,用于选择行并标记它。

How when the select / unselect button is clicked,

it select on row table too, Not just on the checkbox?

点击行表就可以看到

代码片段演示:

$('#example').dataTable();

//Select row table
$('#example').on('click', 'tr', function() {
  var $row = $(this),
    isSelected = $row.hasClass('selected')
  $row.toggleClass('selected')
    .find(':checkbox').prop('checked', !isSelected);
});

// Problem : Checkbox !== select row
$("#selectAll, #unselectAll").on("click", function() {
  var selectAll = this.id === 'selectAll';
  $("#example tr :checkbox").prop('checked', selectAll);
});
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet"/>


<button type="button" id="selectAll"> Select </button>
<button type="button" id="unselectAll"> UnSelect </button>

<table id="example" class="myclass" />
<thead>
  <tr>
    <th>
    </th>
    <th>Name</th>
    <th>Company</th>
    <th>Employee Type</th>
    <th>Address</th>
    <th>Country</th>
  </tr>
</thead>
<tbody>

  <tr>
    <td>
      <input type="checkbox" />
    </td>
    <td>Calvin</td>
    <td>TCS</td>
    <td>IT</td>
    <td>San Francisco</td>
    <td>US</td>
  </tr>

  <tr>
    <td>
      <input type="checkbox" />
    </td>
    <td>Ananda</td>
    <td>TCS</td>
    <td>IT</td>
    <td>San Francisco</td>
    <td>US</td>
  </tr>

  <tr>
    <td>
      <input type="checkbox" />
    </td>
    <td>John</td>
    <td>TCS</td>
    <td>IT</td>
    <td>San Francisco</td>
    <td>US</td>
  </tr>

  <tr>
    <td>
      <input type="checkbox" />
    </td>
    <td>Doe</td>
    <td>TCS</td>
    <td>IT</td>
    <td>San Francisco</td>
    <td>US</td>
  </tr>
</tbody>

JSFiddle

最佳答案

一种方法是在提供 second argument 的行上调用 .toggleClass()说是添加还是删除类:

  $("#example tr").toggleClass("selected", selectAll)
    .find(":checkbox").prop('checked', selectAll);

添加到您的演示:

$('#example').dataTable();

//Select row table
$('#example').on('click', 'tr', function() {
  var $row = $(this),
    isSelected = $row.hasClass('selected')
  $row.toggleClass('selected')
    .find(':checkbox').prop('checked', !isSelected);
});

// Problem : Checkbox !== select row
$("#selectAll, #unselectAll").on("click", function() {
  var selectAll = this.id === 'selectAll';
  $("#example tr").toggleClass("selected", selectAll)
    .find(":checkbox").prop('checked', selectAll);
});
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet"/>


<button type="button" id="selectAll"> Select </button>
<button type="button" id="unselectAll"> UnSelect </button>
<table id="example" class="myclass" />
<thead>
  <tr>
    <th></th><th>Name</th><th>Company</th><th>Employee Type</th><th>Address</th><th>Country</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td><input type="checkbox" /></td><td>Calvin</td><td>TCS</td><td>IT</td><td>San Francisco</td><td>US</td>
  </tr>
  <tr>
    <td><input type="checkbox" /></td><td>Ananda</td><td>TCS</td><td>IT</td><td>San Francisco</td><td>US</td>
  </tr>
  <tr>
    <td><input type="checkbox" /></td><td>John</td><td>TCS</td><td>IT</td><td>San Francisco</td><td>US</td>
  </tr>
  <tr>
    <td><input type="checkbox" /></td><td>Doe</td><td>TCS</td><td>IT</td><td>San Francisco</td><td>US</td>
  </tr>
</tbody>

关于javascript - 选择复选框 !== 选择行表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47522658/

相关文章:

javascript - 如何在渲染时设置 Meteor 模板标题?

javascript - 如何将 HTML5 麦克风输入捕获到 icecast?

javascript - 如何通过 jquery datepicker 或 bootstrap datepicker 设置 hijri datepicker?

jquery - 将页面显示为 Normal(320) 大小?

javascript - 在 safari 上运行 Protractor 测试,例如 "Angular could not be found on the page https://angularjs.org/"

javascript - Href 哈希 ID 滚动到 Div 但它会跳转并跳过某些部分

javascript - 使用 jQuery 的 angularjs 应用程序中的路由错误

PHP - 使用 MySQL 数据库中的记录作为值创建复选框

jquery - 将所有节点设置为jstree jquery中选定的onload

java - GWT:标签无法转换为 com.google.gwt.user.client.ui.CheckBox