【问题标题】:Check All/Uncheck All using jquery使用jquery全选/取消全选
【发布时间】:2014-12-13 20:43:08
【问题描述】:

我有这个来自 cakephp 生成的 ctp 文件的标记。

这基本上是一个有爱好的复选框组。

所以,我想使用 jquery 选中所有/取消选中所有,毕竟如果我取消选中一个框,则选中所有复选框将被删除,因此如果我选中所有单个复选框,选中所有框将自动选中。

我的代码:

<div class="checkgroup">
  <input type="checkbox" name="data[Student][hobby][]" value="checkAll" id="StudentHobbyCheckAll" />
  <label for="StudentHobbyCheckAll">Check All/Uncheck All</label>
</div>
<div class="checkgroup">
  <input type="checkbox" name="data[Student][hobby][]" value="sports" id="StudentHobbySports" />
  <label for="StudentHobbySports">Sports</label>
</div>
<div class="checkgroup">
  <input type="checkbox" name="data[Student][hobby][]" value="movies" id="StudentHobbyMovies" />
  <label for="StudentHobbyMovies">Movies</label>
</div>
<div class="checkgroup">
  <input type="checkbox" name="data[Student][hobby][]" value="netsurfing" id="StudentHobbyNetsurfing" />
  <label for="StudentHobbyNetsurfing">Netsurfing</label>
</div>
<div class="checkgroup">
  <input type="checkbox" name="data[Student][hobby][]" value="photography" id="StudentHobbyPhotography" />
  <label for="StudentHobbyPhotography">Photography</label>
</div>

【问题讨论】:

标签: jquery checkbox


【解决方案1】:

http://jsfiddle.net/d5b01jdd/

var $chAll = $('#StudentHobbyCheckAll');
var $ch=$('.checkgroup input[type="checkbox"]').not($chAll);

$chAll.click(function () {
    $ch.prop('checked', $(this).prop('checked'));
});

$ch.click(function(){
    if($ch.size()==$('.checkgroup input[type="checkbox"]:checked').not($chAll).size())
        $chAll.prop('checked',true);
    else
        $chAll.prop('checked',false);
});

【讨论】:

  • 很高兴能帮上忙
【解决方案2】:

这应该可行。 CODEPEN

$(function(){
  $('#StudentHobbyCheckAll').on('change', function() {
    $(this)
      .parents(':not(> :checkbox)')
      .find(':checkbox:gt(0)')
      .prop('checked', !$(this)[0].checked);
  }).change();
});

【讨论】:

  • “所以如果我选中所有单独的复选框,所有复选框都会被自动选中”? (虽然很难注意到)
  • @Todd ..我试过你的代码..但它不起作用。全选复选框的 id 是“StudentHobbyCheckAll”。它应该如何处理全选复选框的值.我的要求是 1.当我选择全选复选框时,所有将被选中。 2.选中所有复选框,如果我取消选中一个复选框,则必须删除 selectAll 复选框 3.如果我选中其余 4 个复选框,将自动选中最上面的一个。这很难做到,因为所有检查框位于单独的 Div 中。
  • 我的要求是 1.当我选中全选复选框时,将全选。 2.选中所有复选框,如果我取消选中一个复选框,则必须删除 selectAll 复选框 3.如果我选中其余 4 个复选框,将自动选中最上面的一个。这很难做到,因为所有检查框在一个​​单独的 Div.@dotpush
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2010-12-02
相关资源
最近更新 更多