使用jquery选中并取消选中所有复选框

时间:2016-12-07 10:52:37

标签: javascript jquery checkbox

我正在使用此脚本检查并取消选中所有复选框:

$('#checkall').click(function () {
    var checked = $(this).data('checked');
    $('.chkall').find(':checkbox').attr('checked', !checked);
    $(this).data('checked', !checked);
});

效果很好,但是在&#34之后我取消选中几个选中的复选框;检查所有"然后点击"取消选中所有"并且"检查所有"再次,不再检查那些以前未选中的复选框。帮助会很棒!非常感谢你!

3 个答案:

答案 0 :(得分:8)

这可能是正确的方法..

使用prop代替attr并将div中的复选框列表分组,仅用于组织目的。也可以原样使用checked,不要否定它。

$(document).ready(function() {
  $('#checkall').click(function() {
    var checked = $(this).prop('checked');
    $('#checkboxes').find('input:checkbox').prop('checked', checked);
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="checkall" />
<label for="checkall">check / uncheck all</label>
<br/>
<br/>
<div id="checkboxes">
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />

</div>

答案 1 :(得分:7)

$('#checkall').click(function(){
    var d = $(this).data(); // access the data object of the button
    $(':checkbox').prop('checked', !d.checked); // set all checkboxes 'checked' property using '.prop()'
    d.checked = !d.checked; // set the new 'checked' opposite value to the button's data object
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='checkall' data-checked='false'>check/uncheck all</button>
<input type=checkbox>
<input type=checkbox>
<input type=checkbox>
<input type=checkbox>
<input type=checkbox>

根据触发按钮,我猜到了HTML的样子,但我不知道你最初是如何在其上设置data的。希望这是你编码的方式。如果没有,请告诉。

答案 2 :(得分:2)

您只需要获取所有复选框并进行全部检查。

&#13;
&#13;
SELECT Customer_Name,
       Sub_Customer_Name,
       Post_Type,
       Equipment_Size,
       SUM(Qty),
       Trans_Mode,
       Address_1,
       City,
       ST,
       Postal_Code,
       Country,
       PortRampID,
       PortRamp_Name,
       PortRamp_Code,
       Ship_Line_Name,
       AvailableDate,
       ExpiredDate
FROM YourTable
GROUP BY Customer_Name,
         Sub_Customer_Name,
         Post_Type,
         Equipment_Size,
         Trans_Mode,
         Address_1,
         City,
         ST,
         Postal_Code,
         Country,
         PortRampID,
         PortRamp_Name,
         PortRamp_Code,
         Ship_Line_Name,
         AvailableDate,
         ExpiredDate
&#13;
$('#checkall').click(function() {

  var _this = this;
  $('#checkboxes').find('input[name="checkAll"]').each(function() {
   
    if ($(_this).is(':checked')) {
      $(this).prop('checked', true);
    } else {
      $(this).prop('checked', false);
    }
  });
});
&#13;
&#13;
&#13;